最近我们的Subversion (SVN)服务器发生了变化,我们进行了SVN切换。

由于工作副本有大量未版本化的资源,因此工作副本被锁定,我们开始为SVN下的所有文件夹逐个切换文件夹,这非常好。

但是在存储库的最高层,当我试图更新文件时,我得到一个错误,说svn:工作副本'。的锁。试图清理也无济于事;它会导致诸如svn: 'content'不是一个工作拷贝目录之类的错误。

新的结帐根本不是一个选项。我还可以如何清理和释放锁并完成svn切换过程?


当前回答

处理:

重命名不是“工作副本”的目录。 再次签出/更新/恢复此目录。 将重命名目录中的文件移动到新目录中。 提交更改。

原因:

您对.svn目录下的一些文件做了一些更改,这破坏了“工作副本”。

其他回答

当我在代码上执行mvn release:prepare时,我看到了这个错误。就我而言,我已经将项目从SVN迁移到GitHub,并从GitHub克隆了源代码。但是在我的pom.xml文件中,我没有将SCM位置从SVN URL更新到GitHub URL,导致工作目录不匹配。

纠正URL到GitHub位置帮助我解决了这个问题。

我在svn diff操作中也遇到了这个问题。这是由错误的文件路径引起的。你应该加上‘。/'表示当前文件目录。

处理:

重命名不是“工作副本”的目录。 再次签出/更新/恢复此目录。 将重命名目录中的文件移动到新目录中。 提交更改。

原因:

您对.svn目录下的一些文件做了一些更改,这破坏了“工作副本”。

我刚刚遇到了这样一种情况:.svn目录位于另一台机器上的NFS服务器上,NFS客户端没有运行文件锁定服务(lockd)。

svn: E155007: '/mnt/svnworkdir' is not a working copy

在NFS客户端主机上启动lockd之后,这个问题就消失了。

当Subversion无法锁定文件时,它似乎可以提供更好的错误消息。这是Subversion 1.10.0

如果你在做递归的svn清理时得到了一个“非工作副本”,你可能有一个子目录,它应该是一个工作副本(即顶层的.svn目录这么说),但是子目录缺少它自己的.svn目录。

在这种情况下,您可以移动或删除该目录,然后进行本地更新。若要删除该目录,

rm -rf content
svn checkout content

警告:rm -rf将永久删除文件夹内容。

如果您得到一个not a working copy错误,这意味着Subversion无法在content子目录中找到正确的.svn目录。检查内容中是否有.svn目录。

如果可能的话,理想的解决方案是重新结账。