当';svn清理';失败?
我在一个工作文件夹中做了很多更改,试图进行更新时出现了一些问题 现在,当我发布“svn清理”时,我得到:当';svn清理';失败?,svn,Svn,我在一个工作文件夹中做了很多更改,试图进行更新时出现了一些问题 现在,当我发布“svn清理”时,我得到: >svn cleanup . svn: In directory '.' svn: Error processing command 'modify-wcprop' in '.' svn: 'MemPoolTests.cpp' is not under version control MemPoolTests.cpp是另一个开发人员添加的新文件,在更新中被删除。它以前不存在于我的工作
>svn cleanup .
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'MemPoolTests.cpp' is not under version control
MemPoolTests.cpp是另一个开发人员添加的新文件,在更新中被删除。它以前不存在于我的工作文件夹中
我可以做些什么来尝试向前推进,而不必签出存储库的新副本
澄清:感谢您提出建议,将目录移到一边,并下载新的副本。我知道这是一个选项,但我希望避免这样做,因为有许多更改嵌套在几个目录深处(这应该是一个分支…)
我希望有一种更积极的方式来进行清理,也许是强制文件SVN返回到已知状态的方式(我尝试删除它的工作副本…但没有帮助)。如果所有其他方法都失败:
cd dir_above_borked
mv borked_dir borked_dir.bak
svn update borked_dir
这将为您提供一个borked文件夹的良好工作副本,但您仍然可以在borked_dir.bak中备份所做的更改。同样的原则也适用于Windows/TortoiseSVN
如果在独立文件夹中有更改,请查看
svn checkout -N borked_dir # Non-recursive, but deprecated
或
我也有同样的问题。我无法提交,清理工作将失败 使用命令行客户端,我能够看到一条错误消息,表明它无法将文件从
.svn/props
移动到.svn/prop base
我查看了特定的文件,发现它被标记为只读。删除只读属性后,我能够清理文件夹并提交我的更改。重新开始时不是一个选项
我删除了
.svn
目录中的日志文件(我还删除了.svn/props base
中有问题的文件),进行了清理,然后继续更新。它可能不适用于所有情况,但当我最近遇到这个问题时,我的“修复”是升级我系统上的Subversion包。我一直在运行1.4.6版本的东西,当我升级到最新版本(我的例子是1.6.6)时,结帐成功了
(我确实尝试过重新下载它,但对一个干净目录的签出总是挂在同一个位置。)可能是因为两个文件名的大小写不同。如果遇到此问题,创建另一个工作副本目录并不能解决此问题 当前的Windows(即蹩脚的)文件系统根本无法区分
Filename
和Filename
之间的区别。您有两种可能的修复方法:
SVN rename-m“breaked filename case”从任何命令行SVN客户端远程重命名有问题的文件http://server/repo/FILEname http://server/repo/filename
使用Windows的网络驱动器上有时会发生只读锁定。尝试断开连接,然后重新连接。然后进行清理和更新。如果问题是区分大小写的(这在签出到Mac和Windows时可能是个问题),并且您没有签出到*nix系统的选项,则以下操作应该有效。以下是从一开始的过程:
% svn co http://[domain]/svn/mortgages mortgages
(结帐之后……然后……)
在这里,SVN尝试签出两个名称相似但大小写不同的文件-Header\u 3\u noBookmark.gif
和Header\u 3\u noBookmark.gif
。Mac文件系统默认不区分大小写,在这种情况下会导致SVN阻塞。所以
% cd mortgages/trunk/images/rates/
% 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
查看其余部分
$ ls -la .svn
$ rm -f .svn/lock
然后
希望它能有所帮助在浏览了这里引用的大多数解决方案之后,我仍然发现了错误 问题是。签出包含两个同名文件但大小写不同的目录会导致问题。例如,ApproximationTest.java和ApproximationTest.java不应位于同一目录中。一旦我们删除了其中一个文件,问题就会消失。(在您尝试移动文件夹和执行新签出之前。) 删除有问题的文件所在的文件夹-是,甚至是
.svn
文件夹,然后
在最上面的/父文件夹上执行
svn清理
。我遇到一个问题,在更新后,svn显示一个文件夹冲突。奇怪的是,这只能通过命令行看到——乌龟认为一切都很好
#>svn st
! my_dir
! my_dir\sub_dir
svn cleanup
、svn revert
、svn update
和svn resolve
都无法修复此问题
我最终解决了以下问题:
- 在.svn目录中查找“sub_dir”
- 使用RC->Properties取消选中t上的“只读”标志
$ ls -la .svn $ rm -f .svn/lock
$ svn update
#>svn st ! my_dir ! my_dir\sub_dir
# Go to the 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/
svn: E720002: Can't open file '..\.svn\pristine\40\40d53d69871f4ff622a3fbb939b6a79932dc7cd4.svn-base': The system cannot find the file specified.
~/path/to/svn-folder/$ svn cleanup