私の svn リポジトリでタグ付けされたバージョンをチェックアウトする際に問題が発生しました。これはおそらく、内部の 'svn:externals' が正しいリビジョンを参照していないことが原因です。単純化された状況を考えてみましょう:
リビジョン XXX1 で次のような最初の svn リポジトリがあります。
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
同じサーバーに次のような 2 つ目のリポジトリもあります。
Repo2 (@ HEAD2)
tags
1.0.0
ExternalToRepo1 (svn:externals -rXXX1 ^/../Repo1/trunk)
trunk
ExternalToRepo1 (svn:externals ^/../Repo1/trunk)
IE: 繰り返しますが、良くも悪くも、2 番目のリポジトリは外部参照を使用して最初のリポジトリを参照しています (タグ付きバージョンのリビジョンとリビジョンHEAD1
ですべてを正しいリビジョンで固定するため)。trunk
XXX1
問題
trunk
のをチェックアウトしているとき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
問題を再現するもう 1 つの方法は、リビジョンをチェックアウトするか、単に参照することXXX1
です。svn:externals '../Folder2'
その後も相対的になるHEAD1
ので、解決策はあまりないと思います。