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

现在当我发出'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有麻烦回到一个已知的状态(我尝试删除它的工作副本…这并没有帮助)。


当前回答

看一看

http://www.anujvarma.com/svn-cleanup-failedprevious-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

以上链接修复的总结(感谢Anuj Varma)

Install sqlite command-line shell (sqlite-tools-win32) from http://www.sqlite.org/download.html sqlite3 .svn/wc.db "select * from work_queue" The SELECT should show you your offending folder/file as part of the work queue. What you need to do is delete this item from the work queue. sqlite3 .svn/wc.db "delete from work_queue" That’s it. Now, you can run cleanup again – and it should work. Or you can proceed directly to the task you were doing before being prompted to run cleanup (adding a new file etc.)

其他回答

我将同事的.svn目录复制到我的目录中,然后更新我的工作副本,从而解决了这个问题。这是一个很好的、快速的、干净的解决方案。

我做了sudo chmod 777 -R。以便能够更改权限。如果没有sudo,它将无法工作,给我带来与运行其他命令相同的错误。

现在您可以执行svn update或其他操作,而不必废弃整个目录并重新创建它。这是特别有用的,因为您的IDE或文本编辑器可能已经打开了某些选项卡,或者有同步问题。您不需要使用此方法废弃并替换您的工作目录。

如果以上都失败了:

签出到一个新文件夹中。 复制修改过的文件。 检查回来。 在删除旧文件夹并使用新文件夹之前,将旧文件夹压缩到某个地方(你永远不知道+偏执狂是好的)。

我刚刚在64位的Windows 7上遇到了同样的问题。我以管理员身份运行控制台,并从问题目录中删除了.svn目录(得到了关于日志或其他内容的错误,但忽略了它)。然后,在资源管理器中,我删除了不再显示为版本控制下的问题目录。然后,我运行了一个更新,事情按照预期进行。

当遇到类似的问题时,在存储库同步视图中手动合并有助于解决这个问题。

一个文件名与其他文件名冲突,它清楚地提到了这个问题。将新文件重命名为不同的名称可以解决这个问题。