我在检查 svn 存储库中的标记版本时遇到了一些麻烦,很可能是因为内部的 'svn:externals' 没有引用正确的修订版。让我们考虑简化的情况:
我有第一个 svn 存储库,它在 XXX1 修订版中看起来像这样:
Repo1 (@ Rev XXX1)
tags
...
trunk
Folder1
ExternalRefToFolder2 (svn:externals '../Folder2')
Folder2
SomeFile1.txt
SomeFile2.txt
并且已被重构为(在头部修订时):
Repo1 (@ HEAD1)
tags
...
trunk
Folder1
SomeFile1.txt
SomeFile2.txt
IE:无论好坏,外部引用Folder2已被删除并替换为修订XXX1和HEAD1.
我在同一台服务器上还有第二个存储库,如下所示:
Repo2 (@ HEAD2)
tags
1.0.0
ExternalToRepo1 (svn:externals -rXXX1 ^/../Repo1/trunk)
trunk
ExternalToRepo1 (svn:externals ^/../Repo1/trunk)
IE:同样,无论好坏,第二个存储库使用外部引用引用第一个存储库(标记版本HEAD1中的修订trunk和修订XXX1,以便将所有内容冻结在正确的修订中)。
问题
当我签出
trunkof 时Repo2,我没有问题。那是Repo1用它的单检出的Folder1。当我检查 的标签
1.0.0时,svn 抱怨它在修订Repo2时找不到。http://server//Repo1//trunk//Folder2HEAD1
因此,即使标签在其正确的修订版1.0.0中引用,它看起来也是如此;内部外部被解释为好像基于(而不是我所期望的修订)。Repo1/trunkXXX1svn:externals '../Folder2'HEAD1XXX1
这种行为是否正常,我该如何解决这个问题?
注意:我拥有的 Svn 版本是 2012 年 12 月 12 日编译的 1.7.8 (r1419671)
编辑
重现问题的另一种方法是签出或简单地浏览Repo1revision XXX1。svn:externals '../Folder2'然后仍然是相对的,HEAD1所以猜测没有太多解决方案。