最近我们的svn服务器发生了变化,我们做了一个svn开关。
由于工作副本有大量的无版本资源,工作副本被锁定,我们开始在文件夹下为svn下的所有文件夹切换文件夹,这非常合适。
但是在存储库的最顶层,当我尝试更新文件时,我得到了 svn:Working copy'。锁定错误,清理也无济于事。当我进行清理时,我会收到类似这样的错误 - svn:'content'不是工作副本目录
新鲜结账不是一个选择。有没有其他方法可以清理和释放锁并完全切换?
修改 JesperE答案中的最后一段
如果你得到“非工作副本” 做一个递归的“svn清理”我的 猜测你有一个目录 这应该是一份工作副本(即 顶层的.svn目录 如此说,但它缺少自己的 .svn目录。在那种情况下,你 可能会尝试删除/移动它 目录,然后进行本地更新
似乎是存储库中问题的解决方案。我已经确定了那些文件夹并单独对这些特定文件夹进行了新的检查,并且哇,锁在随后的清理中被释放!非常感谢JesperE !!
但是,我仍然无法弄清楚svn开关错误,它现在读起来像是
svn:存储库在 '的svn:// repourl / reponame /文件夹名' 有uuid'm / reponame',但WC 有'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'
有什么想法吗?
答案 0 :(得分:123)
如果在进行递归svn cleanup
时得到“非工作副本”,我的猜测是你有一个应该是工作副本的目录(即顶层的.svn
目录说所以),但它缺少自己的.svn
目录。在这种情况下,您可以尝试删除/移动该目录,然后进行本地更新(即rm -rf content; svn checkout content
)。
如果出现not a working copy
错误,则表示Subversion无法在其中找到正确的.svn
目录。检查.svn
contents
目录
如果可能,理想的解决方案是全新结账。
答案 1 :(得分:46)
我以不同的方式陷入了类似的情况(svn: 'papers' is not a working copy directory
),所以我想我会发布我的战斗故事(简化):
$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied
糟糕!修复权限...然后:
$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~ papers
$ svn cleanup
svn: 'papers' is not a working copy directory
甚至将papers
移开并运行svn up
(适用于OP)并没有解决它。这是我做的:
$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers
那很有效。
答案 2 :(得分:6)
我通过
解决了这个问题在我的情况下,问题是由于删除了.svn文件。
答案 3 :(得分:5)
也许你刚刚复制了文件夹树并尝试添加最低版本。
SVN
|_
|
subfolder1
|
subfolder2 (here you get an error)
在这种情况下,您必须在上一级提交目录。
答案 4 :(得分:3)
解决方法: 重命名不是“工作副本”的目录 再次检出/更新/恢复此目录 将文件从重命名的目录移动到新目录 提交更改
原因: 您对.svn目录下的某些文件进行了一些更改,这会打破“工作副本”
答案 5 :(得分:2)
如果您在新目录中创建了一个文件,而不是'svn add newdir / newfile',请使用'svn add newdir',因为您需要添加目录。默认情况下,将添加目录中的所有文件。
答案 6 :(得分:1)
我刚刚得到“不是工作副本”,对我而言,原因是Unix上的Automouter。 只需一个新的“cd / path / to / work /目录”就可以了。
答案 7 :(得分:1)
同样,我需要更新'contrib'文件夹:
我的情况也是问题是由于删除了.svn文件夹。
解决。
答案 8 :(得分:1)
我也在svn diff操作中遇到这个问题,它是由不正确的文件路径引起的,你应该添加'./'
来指示当前的文件目录。
答案 9 :(得分:1)
我尝试将.svn文件夹从子文件夹粘贴到根文件夹。它有效!!!
答案 10 :(得分:1)
这就是我所做的:
答案 11 :(得分:0)
我从同一项目进行了新的签出到另一个位置,然后从其中复制了.svn文件夹,并替换为旧的.svn文件夹。之后,调用了svn更新功能,所有内容均已正确同步到最新状态。
答案 12 :(得分:0)
我只是遇到.svn目录位于另一台计算机上的nfs服务器上,并且nfs客户端未运行文件锁定服务(lockd
)的情况。
svn: E155007: '/mnt/svnworkdir' is not a working copy
在nfs客户端主机上启动lockd
后,这种情况就消失了。
当Subversion在锁定文件时遇到麻烦时,它似乎会提出更好的错误消息。这是Subversion 1.10.0
答案 13 :(得分:0)
最近我在使用其他开发人员Mac 我有同样的情况,问题是;首先,我需要输入get repo path到终端,但是我没有输入,而是说您的用户名和密码是什么。
答案 14 :(得分:0)
今天早上我发现了相同的问题 /FILE_NAME/ is not a working copy
,我花了两个多小时来解决它。经过很长一段时间的RND和Google我找到了一些解决方案,那就是CHECKOUT
。
CHECKOUT
从SUBVERSION
到本地作为新项目。希望它对你有所帮助。
答案 15 :(得分:0)
如果出现同样的问题,我们会在同一台机器上安装Slik 1.6.2以及Tortoise。乌龟已更新(并更新了工作副本)但Slik没有,所以Tortoise工作正常,但命令行失败了:
svn:'。'不是工作副本目录
删除Tortoise和Slik,然后使用命令行工具重新安装Tortoise,为我修复了这个问题。
答案 16 :(得分:0)
@JesperE mentions您需要更改uuid。以下内容可帮助您实现这一目标。
在SVN 1.5+上,你可以做svnadmin setuuid;然后,您可以使用svnlook uuid检查它是否已正确设置。在早期版本的SVN上,这是一个更难的过程。见http://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html
此外,“m / reponame”的UUID看起来很可疑。我相信它应该是一个十六进制格式的数字,就像工作副本一样,所以也许这个动作会改善一切: - )
[我最初对@JesperE's answer发表了评论,但创建了这个答案,使其对人们更明显,对Google更有帮助。我已经删除了我的评论。 ]
答案 17 :(得分:0)
您必须已从项目中删除了SVN基本文件(这些文件是只读文件)。因此,您会收到此错误。
再次签出一个新项目,使用“Winmerge”将旧版SVN项目的更改(如果有)与新版本合并,并在最近的签出中提交更改。
答案 18 :(得分:0)
这可能是工作副本格式不匹配吗?它在svn 1.4和1.5之间发生了变化,而较新的工具会自动转换格式,但旧的格式不再适用于转换后的副本。
答案 19 :(得分:0)
svn:'svn:// repourl / reponame / foldername'的存储库有uuid'm / reponame',但WC有'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'
每个subversion repo都有一个唯一标识符(uuid)。 Subversion使用它来确保在执行切换等操作时repo实际上是相同的。您应该将服务器上的uuid更改为与以前相同。
答案 20 :(得分:-1)
删除本地计算机中存在的.svn文件夹。按Windows图标并键入.svn,删除整个文件夹。它对我有用。