SVN错误-不是工作副本

SVN错误-不是工作副本,svn,Svn,最近我们的svn服务器发生了变化,我们进行了svn切换 由于工作副本有大量未版本化的资源,工作副本被锁定,我们开始为svn下的所有文件夹逐个切换文件夹,效果非常好 但是在存储库的最顶层,当我尝试更新文件时,我得到了svn:Working copy.“.”锁定的错误和清理也没有帮助。当我进行清理时,会出现如下错误-svn:“content”不是工作副本目录 全新结账根本不是一个选项。是否有其他方法来清理和释放锁,并完全切换 编辑: 杰斯佩尔回答的最后一段 如果您在以下时间收到“非工作副本” 执行递

最近我们的svn服务器发生了变化,我们进行了svn切换

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

但是在存储库的最顶层,当我尝试更新文件时,我得到了svn:Working copy.“.”锁定的错误和清理也没有帮助。当我进行清理时,会出现如下错误-svn:“content”不是工作副本目录

全新结账根本不是一个选项。是否有其他方法来清理和释放锁,并完全切换

编辑: 杰斯佩尔回答的最后一段

如果您在以下时间收到“非工作副本” 执行递归“svn清理”我的 我猜你有一个目录 哪一个应该是工作副本(即。 顶层的.svn目录 但它却失去了自己的价值 .svn目录。那样的话,你 你可以试着把它移走 目录,然后执行本地更新

似乎是存储库中问题的解决方案。我已经确定了这些文件夹,并单独对这些特定文件夹进行了新的签出,哇,锁在随后的清理中被释放了!非常感谢JesperE

但是,我仍然无法找出svn开关错误,它现在的读数如下:

svn:位于 'svn://repourl/reponame/foldername' uuid为'm/reponame',但WC 具有“b5b39681-0ff6-784b-ad26-2846b9ea8e7d”

有什么想法吗?

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

如果您得到一个
非工作副本
错误,则意味着Subversion无法在其中找到合适的
.svn
目录。检查
目录中是否有
.svn
目录

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

svn:存储库位于'svn://repourl/reponame/foldername'具有uuid'm/reponame',但WC具有'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'


每个subversion repo都有一个唯一标识符(uuid)。Subversion使用这一点来确保在进行切换等操作时回购协议实际上是相同的。您可能应该将服务器上的uuid更改为与以前相同。

这可能是工作副本格式不匹配吗?它在svn 1.4和1.5之间进行了更改,较新的工具会自动转换格式,但较旧的工具不再使用转换后的副本。

您必须已从项目中删除svn-base文件(只读文件)。由于这个原因,您会得到这个错误

再次签出新项目,使用“Winmerge”将旧SVN项目的更改(如果有)与新项目合并,并在最近的签出中提交更改。

解决方法: 重命名不是“工作副本”的目录 再次签出/更新/还原此目录 将文件从重命名的目录移动到新目录 提交更改

原因: 您对.svn目录下的某些文件进行了一些更改,这将中断您需要更改uuid的“工作副本”。以下内容将帮助您实现这一目标

在SVN 1.5+上,可以执行svnadmin setuuid;然后,您可以使用svnlook uuid检查它是否已正确设置。在SVN的早期版本中,这是一个更难的过程。看

此外,“m/reponame”的UUID看起来可疑。我相信它应该是一个十六进制格式的数字,就像工作副本的一样,所以也许这个操作将全面改进:-)


[我最初发表了评论,但创建这个答案是为了让人们更清楚,对谷歌更有帮助。后来我删除了我的评论。]

我也遇到了类似的情况(
svn:'papers'不是一个有效的副本目录
),所以我想以不同的方式发布我的战斗故事(简化):

哎呀!修复权限。。。然后:

$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~     papers
$ svn cleanup
svn: 'papers' is not a working copy directory
甚至将
论文
移到一边,运行
svn up
(为OP工作)也无法解决问题。以下是我所做的:

$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers
这很管用。

我刚收到“没有工作副本”,对我来说,原因是Unix上的Automouter。
只需要一个新的“cd/path/to/work/directory”就可以了。

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

我通过

  • 复制受影响文件夹的备份
  • SVN还原受影响的文件夹
  • 从备份中粘贴文件

  • 在我的例子中,问题是由于删除了.svn文件

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

  • 将旧文件夹移出
  • 复制了新的
  • 将.svn文件夹复制到每个新文件夹中(在我的示例中只有三个)
  • 我也知道我的案例问题是由于删除了.svn文件夹造成的


    已解决。

    可能您只是复制了文件夹的树,并尝试添加最低的树

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

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

    也有同样的问题,结果是我们在同一台机器上有Slik 1.6.2和Tortoise。Ortoise已经更新(并且已经更新了工作副本),但是Slik没有更新,所以Ortoise工作正常,但是命令行失败,原因是:

    svn:“.”不是工作副本目录


    删除Turtoise和Slik,然后在启用命令行工具的情况下重新安装Turtoise修复了这一问题。

    我尝试将.svn文件夹从子文件夹粘贴到根文件夹。它工作

    我就是这么做的:

    $ mv papers papers_
    $ svn cleanup
    $ svn revert papers
    Reverted 'papers'
    $ mv papers_/ papers
    $ svn add papers
    
  • 将主干重命名为主干_
  • 创建一个
    svn: E155007: '/mnt/svnworkdir' is not a working copy