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