什么时候'svn清理'失败?
我在工作文件夹中有很多更改,并试图进行更新的东西搞砸了。
现在,当我发出'svn清理'时,我得到:
>svn cleanup . svn: In directory '.' svn: Error processing command 'modify-wcprop' in '.' svn: 'MemPoolTests.cpp' is not under version control
MemPoolTests.cpp是另一个开发人员添加的新文件,在更新中被取消。 它以前不存在于我的工作文件夹中。
有什么我可以做的尝试和前进, 而不必检出一个新的存储库副本?
澄清:感谢有关移动目录的build议,并删除一个新的副本。 我知道这是一个select,但这是一个我想避免的,因为有很多变化嵌套多个目录深(这应该是一个分支…)我所希望的是一个更积极的做法清理,也许有人强迫文件svn是有麻烦回到已知的状态(我试图删除它的工作副本…这并没有帮助)。
从头开始不是一个选项…
我删除了.svn目录中的日志文件(我也删除了.svn / props-base中的有问题的文件)
然后做了清理
然后恢复我的更新。
随着SVN 1.7的发展,事情已经发生了变化,删除.svn目录中日志文件的stream行解决scheme对于迁移到数据库工作拷贝实现是不可行的。
这是我所做的似乎工作:
- 删除工作副本的.svn目录。
- 在新的临时目录中启动一个新的结帐。
- 取消结帐(我们不希望等待所有东西被拉下来)。
- 在取消的结帐上运行清理。
- 现在我们有一个干净的数据库的新的.svn目录(尽pipe没有/几个文件)
- 将此.svn复制到旧的,损坏的工作目录中。
- 运行svn update,它会使你的新的部分.svn目录加快你的旧工作目录。
这有点令人困惑,stream程明智。 基本上,我们正在做的是删除损坏的.svn,然后创build一个新的.svn为同一个结帐path。 然后,我们将这个新的.svn移到我们的旧工作目录,并将其更新到回购。
我只是在TSVN中这样做,它似乎工作正常,不需要完整的结帐和下载。
-Jody
看一眼
从上面的链接修复摘要(感谢Anuj Varma)
从这里安装sqllite(32位二进制窗口)。
sqlite .svn/wc.db "select * from work_queue"
select应该显示您的有问题的文件夹/文件作为工作队列的一部分。 你需要做的是从工作队列中删除这个项目。
sqlite .svn/wc.db "delete from work_queue"
而已。 现在,你可以再次运行清理 – 它应该工作。 或者你可以直接进行你正在做的任务,然后提示运行清理(添加一个新的文件等)
如果一切都失败了:
- 签出到一个新的文件夹。
- 复制您的修改过的文件。
- 重新检查。
- 在将其删除并使用新文件夹之前,将旧文件夹拉到某处(您永远不知道+偏执狂是好的)。
这个答案只适用于1.7之前的版本(谢谢@ŁukaszBachman)
Subversion存储每个文件夹的信息(以.svn为单位),所以如果你只是处理一个子文件夹,你不需要检出整个资源库 – 只是已经存在的文件夹:
cd dir_above_borked mv borked_dir borked_dir.bak svn update borked_dir
这会给你一个很好的borked文件夹的工作副本,但是你仍然在borked_dir.bak中备份你的修改。 窗户/乌龟同样适用
如果你有一个孤立的文件夹中的变化看看
svn checkout -N borked_dir # non-recursive but deprecated
要么
svn checkout --depth=files borked_dir # depth is new territory to me but svn help checkout
$ ls -la .svn $ rm -f .svn/lock
然后
$ svn update
希望能帮助到你
最新版本(我正在使用1.9.5)通过在清理菜单上添加一个“Break locks”选项来解决这个问题。 清理时请确保选中此checkbox。
有可能你有两个文件名只有大写不同的问题。 如果遇到这个问题,创build另一个工作副本目录不能解决问题。
目前的Windows(即蹩脚的)文件系统根本不FILEname
Filename
和FILEname
之间的区别。 你有两个可能的修复:
- 使用真正的文件系统(基于Unix)检查平台,重命名文件并提交更改。
- 当你坚持使用Windows时,你可以在Eclipse svn repository browser中重命名文件,它可以识别区别,并在那里重命名文件。
- (添加到2011年5月24日编辑)你可以重命名有问题的文件也远程从任何命令行svn客户端使用
svn rename -m "broken filename case" http://server/repo/FILEname http://server/repo/filename
我有完全相同的问题,我不能提交和清理将失败。
使用命令行客户端,我能够看到一个错误消息,指出它无法将文件从.svn / props移动到.svn / prop-base
我看着特定的文件,发现它被标记为只读。 删除只读属性后,我能够清理文件夹和提交我的更改。
希望这可以帮助。
我在Windows 7 64位上遇到了同样的问题。 我以pipe理员身份运行了控制台,并从问题目录中删除了.svn目录(获得了关于日志或其他内容的错误,但忽略了它)。 然后,在资源pipe理器中,我删除了在版本控制下不再显示的问题目录。 然后,我跑了一个更新,事情按预期进行。
我有同样的问题,我的原因是与EasySvn和(TortoiseSvn或只是Svn)冲突。 我有自动更新和提交简单的SVN(这是不工作)。 当我把它关掉时,我无法清理,提交或更新。 上述解决scheme都没有工作,但重新启动:)
每当我有类似的问题,我使用rsync(注意:我使用Linux或MacOSX)来帮助,如下所示:
# go to parent directory cd dir_above_borked # rename corrupted directory mv borked_dir borked_dir.bak # checkout a fresh copy svn checkout svn://... borked_dir # copy the modified files to the fresh checkout # - test rsync # (possibly use -c to verify all content and show only actually changed files) rsync -nav --exclude=.svn borked_dir.bak/ borked_dir/ # - if all ok, run rsync for real # (possibly using -c again, possibly not using -v) rsync -av --exclude=.svn borked_dir.bak/ borked_dir/
这样你有一个新的结帐,但具有相同的工作文件。 对我来说,这总是像一个魅力。
HTH
我试图通过控制台做svn cleanup
,并得到类似的错误
svn: E720002: Can't open file '..\.svn\pristine\40\40d53d69871f4ff622a3fbb939b6a79932dc7cd4.svn-base': The system cannot find the file specified.
所以我手动创build了这个文件(空),并再次进行svn cleanup
。 这一次,它没有问题。
我最近碰到了这个。 select“清理”后,在popup选项对话框中,选中“打破locking”,然后点击“确定”,我的技巧是什么? 它为我成功清理。
试过不同的解决scheme在这里解释,没有工作。
在我的情况,(SVN 1.9.3),在Eclipse上运行Team> Update to head失败,出现错误:
svn:E155004:'/ home / user / path / to / svn-folder'中有未完成的工作项目; 先运行'svn cleanup'。
团队>清理失败,同样的错误。
find简单的解决scheme: 我在命令行运行清理 :
~/path/to/svn-folder/$ svn cleanup
命令成功。 然后Eclipse中的团队>更新再次工作。
如果问题是大小写敏感的(这可能是一个问题,当检查到Mac,以及窗口),你没有检查到* nix系统的选项,下面应该工作。 这是从一开始的过程:
% svn co http://[domain]/svn/mortgages mortgages
[结账继续…然后…]
svn: In directory 'mortgages/trunkhttp://img.dovov.comrates' svn: Can't open file 'mortgages/trunkhttp://img.dovov.comrates/.svn/tmp/text-base/Header_3_nobookmark.gif.svn-base': No such file or directory
这里发生的事情是,svn试图检出两个文件名称相似,只是大小写不同 – Header_3_noBookmark.gif
和Header_3_nobookmark.gif
。 Mac文件系统默认为不区分大小写,导致svn在这种情况下窒息。 所以…
% cd mortgages/trunkhttp://img.dovov.comrates/ % svn up svn: Working copy '.' locked svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
但是,正如我们所知,运行svn cleanup不起作用。
% svn cleanup svn: In directory '.' svn: Error processing command 'modify-wcprop' in '.' svn: 'spacer.gif' is not under version control
spacer.gif
在这里不是问题…它不能移过前面的错误到下一个文件。 所以我删除了.svn
以外的所有文件,并删除了svn日志。 这使清理工作,以便我可以签出并重命名有问题的文件。
% rm *; rm -rf .svn/log; svn cleanup % svn up Header_3_nobookmark.gif A Header_3_nobookmark.gif Updated to revision 1087. % svn mv Header_3_nobookmark.gif foo A foo D Header_3_nobookmark.gif % svn up A spacer.gif A Header_3_noBookmark.gif
在此之后,我可以回到项目的根目录,运行svn up
查看其余部分。
(在尝试移动文件夹并执行新的结帐之前)
删除有问题的文件所在的文件夹 – 是的,甚至是.svn文件夹,然后在顶级/父文件夹上执行svn清理
Subclipse被Windows真正的恶魔般的locking行为弄糊涂了。 Unlocker是你的朋友。 这可以findlocking的文件并强制释放锁。
我面临同样的问题。 在互联网上search后发现下面的文章 。 然后意识到,我被logging为一个不同于我用来设置svn的用户,基本上是一个权限问题。
当我在tortoisesvn(Windows)上面对这个问题时。 我去cygwin并从那里运行' svn cleanup ',它为我清理正确。 之后,所有的东西从tortoisesvn工作。
只读locking有时会发生在带有窗口的networking驱动器上。 尝试断开并重新连接。 然后清理和更新。
经过这里引用的大部分解决scheme后,我仍然得到了错误。 这个问题是不区分大小写的OSX 。 检出具有两个相同名称但大小写不同的文件的目录会导致问题。 例如ApproximationTest.java和Approximationtest.java不应该在同一个目录下。 一旦我们摆脱了一个文件,问题就消失了。
我遇到一个问题,在更新后,svn显示一个文件夹被冲突。 奇怪的是,这只能通过命令行才能看到 – 乌龟认为这一切都很好。
#>svn st ! my_dir ! my_dir\sub_dir
svn cleanup
, svn revert
, svn update
和svn resolve
都没有解决这个问题。
我最终解决了这个问题,如下所示:
- 在.svn目录中查找“sub_dir”
- 使用RC – >属性取消条目文件上的“只读”标志
- 打开条目文件并删除“未完成…”行和相应的校验和
- 保存并重新启用只读标志
- 重复为my_dir目录
之后,一切都很好。
请注意我没有任何本地更改,所以我不知道如果您有这样的风险,是否会有风险。 我没有使用其他人build议的删除/更新方法 – 我通过尝试在my_dir / sub_dir / sub_sub_dir目录(它开始有相同的症状)进入这个状态 – 所以我不想冒险让事情变得更糟再次!
不太关注主题,但是如果有人像我一样碰到这篇文章,也许会有所帮助。
它可能不适用于所有情况,但是当我最近遇到这个问题时,我的“修复”是升级我的系统上的subversion软件包。 我一直在运行1.4.something,当我升级到最新的(1.6.6在我的情况)结帐工作。
(我尝试重新下载它,但一个干净的目录结帐总是挂在同一个地方。)
不不不! 如果您使用svn 1.7或更高版本,清理命令应该做的工作! 我也做了一些实验,发现解决scheme(至less在eclipse中)正在执行清理,只是在错误消息中指定的文件夹,而不是整个项目!
我做的是sudo chmod 777 -R .
能够更改权限。 如果没有sudo,它将无法正常工作,给我和运行其他命令一样的错误。
现在你可以做svn update
或其他什么,而不必废弃整个目录并重新创build它。 这是特别有用的,因为您的IDE或文本编辑器可能已经打开某些选项卡,或者有同步问题。 您不需要使用此方法来取消您的工作目录。
我解决了这个问题,通过复制一些同事.svn目录到我的工作副本,然后更新我的工作副本,这是一个很好的,快速和干净的解决scheme。
这里的答案没有帮助我,但在再次检查项目之前,我closures并打开Eclipse(Subversive是我的SVN客户端),问题消失了。
上面有一些非常好的build议,但是如果你在Windows上使用Tortoise SVN(一个好的产品,但是…)总是回退到命令行并首先执行一个简单的“svn cleanup”。
在许多情况下,Windows客户端不会运行清理命令,但使用svn命令行工具清理工作正常。
这一切都发生在我身上,所以我觉得不得不发帖!
虽然面临类似的问题,手动合并存储库同步视图有助于解决这个问题。 一个文件名与其他文件名冲突,它清楚地提到了这个问题,重新命名较新的文件来parsing它。