是什么导致 SVN 错误 "Revision xxx doesn't match existing revision yyy..."

What causes the SVN error "Revision xxx doesn't match existing revision yyy..."

我正在使用最新版本的 SVN 检出一些文件(使用 'svn co URL DEST')。当我这样做时,我收到一条错误消息 "svn: E155000: Revision 11134260 doesn't match existing revision 11075284 in DEST"。 但是,如果我使用 SVN 的 2011 版本,我不会收到此错误(即结帐工作正常)。 有人可以解释此错误消息的含义,以便我更好地了解如何解决该问题吗?

我试过在 Whosebug 上搜索,Google 搜索和 SVN 文档,只得到与进行合并相关的信息,但没有在结帐时讨论这个问题.当然,由于我没有完全理解这个问题,所以我可能没有找到正确的东西。

可用的 SVN 版本是: svn,版本 1.6.17 (r1128011) 2011 年 6 月 2 日编译,23:35:08

失败的 SVN 版本是: svn,版本 1.11.1 (r1850623) 2019 年 1 月 9 日编译,19:28:50 on x86-microsoft-windows

此错误是由于 SVN 1.6 及之前版本与 1.7 及更高版本之间的差异造成的。在 1.6 及之前的版本中,作为 SVN 存储库一部分的每个 sub-directory 都有自己的 .svn 文件夹。从 1.7 开始,工作副本的根目录下有一个 .svn 文件夹。 在我们的系统中,我们的主存储库中包含的部分目录结构是

root_dir/sub_dir_a

因此,当我检出 root_dir 时,我得到 sub_dir_a 作为子目录。通过我们的构建系统和存储库的发展,sub_dir_a 变得对 root_dir 以外的其他项目有用,并被(错误地)复制到一个单独的存储库(我们称之为 copy_of_sub_dir_a),并且构建系统更改为 a) 签出 root_dir,b) 删除 sub_dir_a,然后 c) 将 copy_of_sub_dir_a 签出到 root_dir/sub_dir_a。在 SVN 1.6 和更早版本中,这会工作得很好,因为 root_dir 只包含 root_dir 的信息。从 1.7 开始,root_dir 有一个 .svn 文件夹,其中还包含 sub_dir_a 的信息,因此当我们的构建系统尝试检出 copy_of_sub_dir_a 时,SVN 会抛出一个错误,指出修订(的copy_of_sub_dir_a) 与 root_dir 所说的不符。 此问题的正确解决方法是不要将 sub_dir_a 作为 root_dir 存储库的一部分 - 它应该是 deleted/moved 而不是复制。