SVN错误 - 不是工作副本

时间:2008-12-17 11:51:40

标签: svn

最近我们的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'

有什么想法吗?

21 个答案:

答案 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)

我通过

解决了这个问题
  1. 复制受影响文件夹的备份
  2. SVN还原受影响的文件夹
  3. 从备份中粘贴文件
  4. 在我的情况下,问题是由于删除了.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'文件夹:

  1. 移出旧文件夹,
  2. 复制新的
  3. 将.svn文件夹复制到每个文件夹中(在我的案例中只有三个)新文件夹。
  4. 我的情况也是问题是由于删除了.svn文件夹。

    解决。

答案 8 :(得分:1)

我也在svn diff操作中遇到这个问题,它是由不正确的文件路径引起的,你应该添加'./'来指示当前的文件目录。

答案 9 :(得分:1)

我尝试将.svn文件夹从子文件夹粘贴到根文件夹。它有效!!!

答案 10 :(得分:1)

这就是我所做的:

  1. 将trunk重命名为trunk _
  2. 创建一个新的文件夹主干
  3. 在签出少量文件后重新签出并中断该过程
  4. 将文件从trunk_移至trunk
  5. svn cleanup
  6. 请更新svn。这将更新文件的状态,然后所有文件都将被版本化。

答案 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

  1. CHECKOUTSUBVERSION到本地作为新项目。
  2. 更改java文件中的一些代码并执行COMMIT项目。
  3. 这对我有用。
  4. 希望它对你有所帮助。

答案 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,删除整个文件夹。它对我有用。