我在检查 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
,以便将所有内容冻结在正确的修订中)。
问题
当我签出
trunk
of 时Repo2
,我没有问题。那是Repo1
用它的单检出的Folder1
。当我检查 的标签
1.0.0
时,svn 抱怨它在修订Repo2
时找不到。http://server//Repo1//trunk//Folder2
HEAD1
因此,即使标签在其正确的修订版1.0.0
中引用,它看起来也是如此;内部外部被解释为好像基于(而不是我所期望的修订)。Repo1/trunk
XXX1
svn:externals '../Folder2'
HEAD1
XXX1
这种行为是否正常,我该如何解决这个问题?
注意:我拥有的 Svn 版本是 2012 年 12 月 12 日编译的 1.7.8 (r1419671)
编辑
重现问题的另一种方法是签出或简单地浏览Repo1
revision XXX1
。svn:externals '../Folder2'
然后仍然是相对的,HEAD1
所以猜测没有太多解决方案。