最近我们的Subversion (SVN)服务器发生了变化,我们进行了SVN切换。
由于工作副本有大量未版本化的资源,因此工作副本被锁定,我们开始为SVN下的所有文件夹逐个切换文件夹,这非常好。
但是在存储库的最高层,当我试图更新文件时,我得到一个错误,说svn:工作副本'。的锁。试图清理也无济于事;它会导致诸如svn: 'content'不是一个工作拷贝目录之类的错误。
新的结帐根本不是一个选项。我还可以如何清理和释放锁并完成svn切换过程?
最近我们的Subversion (SVN)服务器发生了变化,我们进行了SVN切换。
由于工作副本有大量未版本化的资源,因此工作副本被锁定,我们开始为SVN下的所有文件夹逐个切换文件夹,这非常好。
但是在存储库的最高层,当我试图更新文件时,我得到一个错误,说svn:工作副本'。的锁。试图清理也无济于事;它会导致诸如svn: 'content'不是一个工作拷贝目录之类的错误。
新的结帐根本不是一个选项。我还可以如何清理和释放锁并完成svn切换过程?
当前回答
您必须从项目中删除一个SVN基文件(这些文件是只读文件)。因此你会得到这个错误。
再次签出一个新项目,使用WinMerge将旧SVN项目的更改(如果有的话)与新项目合并,并在最近的签出中提交更改。
其他回答
当我试图从一个大型SVN项目中检出部分源代码时,我也遇到了同样的错误:
svn co --depth empty svn://tug.org/texlive/trunk/Build
cd Build
svn update --set-depth infinity --parents ./source/texk/web2c
在这里,父母是成功的关键。
如果你在做递归的svn清理时得到了一个“非工作副本”,你可能有一个子目录,它应该是一个工作副本(即顶层的.svn目录这么说),但是子目录缺少它自己的.svn目录。
在这种情况下,您可以移动或删除该目录,然后进行本地更新。若要删除该目录,
rm -rf content
svn checkout content
警告:rm -rf将永久删除文件夹内容。
如果您得到一个not a working copy错误,这意味着Subversion无法在content子目录中找到正确的.svn目录。检查内容中是否有.svn目录。
如果可能的话,理想的解决方案是重新结账。
我只是得到了“没有工作副本”,对我来说,原因是Unix上的Automouter。 只需要一个新的“cd /path/to/work/directory”就可以了。
如果您在一个新目录下创建了一个文件,请使用'svn add newdir/newfile'而不是'svn add newdir',因为您需要添加目录。默认情况下,将添加该目录中的所有文件。
我刚刚遇到了这样一种情况:.svn目录位于另一台机器上的NFS服务器上,NFS客户端没有运行文件锁定服务(lockd)。
svn: E155007: '/mnt/svnworkdir' is not a working copy
在NFS客户端主机上启动lockd之后,这个问题就消失了。
当Subversion无法锁定文件时,它似乎可以提供更好的错误消息。这是Subversion 1.10.0