2008-12-17 110 views
200

最近我们的SVN服务器被改变,而我们做一个svn开关。SVN的错误 - 不是工作拷贝

由于工作副本有一个巨大的未版本控制的资源量,工作拷贝被锁,我们开始通过文件夹下所有的svn文件夹,运行完美切换文件夹。

但在仓库的最顶层,当我尝试更新的文件,我得到的的svn:工作副本“”锁定错误和清理没有任何帮助。当我进行清理时,我收到类似这样的错误 - svn:'content'不是工作副本目录

新结帐不是一个选项。是否有其他方法可以清理并释放锁并完全切换开关?

编辑: 在JesperE的答复的最后一段

如果你得到一个“不是工作副本”时 做一个递归“使用svn清理”我 猜测是,你有一个目录 这应该是一个工作拷贝(即 在顶层 .svn目录包含是这么说的),但它缺少了自己的.svn 目录。在这种情况下,你 可以尝试只删除/动议 目录,然后执行本地更新

似乎是在仓库解决的问题。我已经确定了这些文件夹,并单独完成了对这些特定文件夹的全新检出,哇,这些锁在随后的清理中被释放!非常感谢JesperE!

但是,我仍然想不通的svn的开关错误,现在读取类似,

的svn:在 '的svn:// repourl/reponame /文件夹名' 的档案库 uuid是“M/reponame”,但WC 有 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

任何想法?

回答

114

如果你在递归时得到一个“不是工作副本”svn cleanup我的猜测是你有一个应该是工作副本的目录(即顶层的.svn目录这样说),但是它缺失自己的.svn目录。在这种情况下,您可以尝试删除/移动该目录,然后执行本地更新(即rm -rf content; svn checkout content)。

如果你得到一个not a working copy错误,这意味着Subversion在那里找不到合适的.svn目录。检查contents中是否有.svn目录

如果可能,理想的解决方案是全新结帐。

+1

我同意,做一个新的结帐,而不是试图移动你的工作副本回购。 – Tigraine 2008-12-17 12:00:17

+2

我的问题是我已经迁移到一个新的服务器,并恢复了我的文件系统备份尚未提交的工作,并使用svnadmin筛选出我不再需要的旧项目。所以我的存储库包含我需要的所有信息,但有一个新的UUID。 在这种情况下,我只需要打开已更改的文件,重新检出,然后解压。 – Drarok 2009-08-28 15:21:11

+0

您的第一段中的建议不适用于我的系统(W7 + Cygwin)。而rm&svn更新做到了。 – 2012-05-02 12:54:20

0

的svn:在存储库 '的svn:// repourl/reponame /文件夹名' uuid是 '米/ reponame',但具有WC 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

每个颠覆回购有一个唯一的标识符(uuid)。 Subversion使用它来确保执行切换操作时repo实际上是相同的。您可能应该将服务器上的uuid更改为与之前相同。

0

它可能是一个工作副本格式不匹配?它在svn 1.4和1.5之间变化,较新的工具自动转换格式,但之后旧的工具不再使用转换后的拷贝。

0

您必须从项目中删除SVN基础文件(它们是只读文件)。由于这个,你会得到这个错误。

再次检查一个新项目,使用“Winmerge”合并您的较早的SVN项目的更改(如果有的话)并在最新检查中提交更改。

3

解决方法: 你做了一些修改一些文件:这是不是“工作副本” 结帐/更新/恢复该目录再次 移动文件从重命名的目录到新 提交更改

原因 重命名目录在.svn目录下,这打破了“工作副本”

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更有帮助。我已经删除了我的评论。 ]

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 

工作。

1

我刚刚得到了“不是工作副本”,对我而言,原因是Unix上的Automouter。 只是一个新的“CD /路径/到/工作/目录”伎俩。

1

如果您在新目录中创建了一个文件,而不是'svn add newdir/newfile',请使用'svn add newdir',因为您需要添加目录。目录内的所有文件将默认添加。

5

我解决它通过

  1. 复制受影响的文件夹的备份
  2. SVN恢复受影响的文件夹
  3. 从备份

在我的情况下,问题将文件粘贴回原因是删除了.svn文件。

1

一样,我需要更新“的contrib”文件夹:

  1. 移动的旧文件夹出,
  2. 复制的新
  3. 复制的.svn目录到每个(只在我的三个大小写)新文件夹。

我的情况也是这个问题是由于删除.svn文件夹。

已解决。

5

也许你只是复制文件夹的树,并试图添加最低的一个。

SVN 
|_ 
    | 
    subfolder1 
     | 
     subfolder2 (here you get an error) 

在这种情况下,您必须提交上级目录。

0

有这个相同的问题,原来我们在同一台机器上有Slik 1.6.2以及Tortoise。乌龟已更新(并更新了工作副本)但Slik没有,所以乌龟工作正常,但命令行失败:

svn:'。'是不是一个工作副本目录

删除龟和Slik,然后重新安装乌龟与命令行工具启用固定这个给我。

1

我试图将.svn文件夹从子文件夹粘贴到根文件夹。有用!!!

1

这是我做过什么:

  1. 重命名树干trunk_
  2. 创建一个新的文件夹主干
  3. 重新签和中断处理后一些文件被检查出
  4. 移动文件从trunk_到中继
  5. 做svn清理
  6. 做svn更新。这将更新文件的状态,然后您的所有文件将被版本化。
1

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

0

为Mac: - 从服务器端需要结帐一个新的窗口将打开,以从本地机器上选择目录不是把所有的代码选定文件夹中,然后打开SVN本地端和添加并提交项目

0

今天我在早上发现了相同的问题/FILE_NAME/ is not a working copy,我已经花了超过两个小时来解决它。经过长时间的RND和谷歌我找到了一些解决方案,那就是CHECKOUT

  1. CHECKOUTSUBVERSION到当地的新项目。
  2. 更改java文件中的一些代码并提交项目。
  3. 这对我很有用。

希望它对你有帮助。

0

删除本地计算机中存在的.svn文件夹。按下windows图标并键入.svn,删除整个文件夹。它为我工作。