我在一个工作文件夹中有很多更改,在尝试进行更新时出错了。

现在当我发出'svn cleanup'时,我得到:

>svn cleanup .
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'MemPoolTests.cpp' is not under version control

MemPoolTests.cpp是另一个开发人员添加的新文件,在更新中被删除了。以前我的工作文件夹里不存在。

我能做些什么来尝试并继续前进,而不必签出存储库的新副本吗?

澄清:感谢您提出的关于将目录移出并删除一个新副本的建议。我知道这是一个选项,但这是我想避免的,因为有许多更改嵌套在几个目录深处(这应该是一个分支…)

我希望有一种更积极的方式来做清理,也许以某种方式迫使文件SVN有麻烦回到一个已知的状态(我尝试删除它的工作副本…这并没有帮助)。


当前回答

它可能并不适用于所有情况,但当我最近遇到这个问题时,我的“解决方案”是升级系统上的Subversion包。我一直跑1.4。当我升级到最新版本(我的版本是1.6.6)时,签出工作正常。

(我确实尝试重新下载,但签出到一个干净的目录总是挂在同一个位置。)

其他回答

每当我有类似的问题,我使用rsync(注意:我使用Linux或Mac OS X)来帮助这样:

# 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/

这样您就有了一个新的签出,但是使用相同的工作文件。 对我来说,这总是很有效。

您可能遇到两个文件名仅大写不同的问题。如果遇到此问题,创建另一个工作副本目录并不能解决问题。

当前的Windows(即蹩脚的)文件系统根本不明白Filename和Filename之间的区别。你有两个可能的解决方案:

在使用真实文件系统(基于unix)的平台上签出,重命名文件,并提交更改。 当您绑定到Windows时,您可以在Eclipse SVN存储库浏览器中重命名文件,该浏览器能够识别差异并在那里重命名文件。 您也可以从任何命令行SVN客户端远程使用SVN rename -m "broken filename case" http://server/repo/FILEname http://server/repo/filename重命名有问题的文件

它可能并不适用于所有情况,但当我最近遇到这个问题时,我的“解决方案”是升级系统上的Subversion包。我一直跑1.4。当我升级到最新版本(我的版本是1.6.6)时,签出工作正常。

(我确实尝试重新下载,但签出到一个干净的目录总是挂在同一个位置。)

$ ls -la .svn
$ rm -f .svn/lock

然后

$ svn update

希望能有所帮助

我只是从~\. xml文件中删除了svn-xxxxxxxx文件。Svn \tmp文件夹,其中XXXXXXXX是数字。