2

2 つのベンダー ブランチを含むディレクトリを持つ CVS リポジトリがあります。最初のコードはあるソースから取得され、X というベンダー名でチェックインされました。数年後、新しいコードが別のベンダー ブランチ名 Y でチェックインされました。

rcs ファイル (FILE,v) をテキスト エディターで表示すると、X:1.1.1、いくつかのタグ、そして Y:1.1.1 が表示されます。

これにより、CVS を使用して認識している問題は発生していませんが、cvs2svn を使用して Subversion に移行したいと考えています。

cvs2svn から次のようなエラーが表示されます。

警告: in '/home/cvs/src/contrib/one-true-awk/FILES,v': ブランチ '1.1.1' には既に名前 'Y' があります。名前 'X' を持つことはできません。後者を無視します

理想的には、履歴全体に新しいベンダー タグ Y を使用したいのですが、それを廃止して古いタグを使用することも考えています。いずれにせよ、cvs2svn がリポジトリを Subversion に変換できるように、これをクリーンアップする必要があります。

この混乱を修復するために CVS のファイルに対して実行できるコマンドや、.v ファイル内の手動の手順はありますか? 新しい Y ブランチ行を削除しようとしましたが、コミットの番号付けが狂っているため、それだけでは機能しません。2 回目のインポートにより 1.2 リビジョンが作成され、cvs2svn も同様に失敗します。

4

1 に答える 1

0

私は cvs2svn users メーリングリストで尋ねました。Michael Haggerty から次の応答を受け取りました。

このエラーが 2 回インポートしたために発生するとは思えません。知る限り、インポートするたびに新しいベンダー ブランチが作成されます。たとえば、1.1.1、1.1.3 など (ベンダー ブランチの最後の番号は常に奇数です) であり、各ベンダー ブランチは独自の記号名を取得します。あなたが経験している状況は、1.1.1 という 1 つのベンダー ブランチしかなく、何らかの形で 'X' と 'Y' という 2 つの記号名を持っているということです。

不要なシンボル名を無視するように cvs2svn に指示すると、問題なく変換が行われるはずです。これを行うには、オプション ファイル メソッドを使用して cvs2svn を開始し、IgnoreSymbolTransform を使用する必要があります。ドキュメントについては、cvs2svn-example.options を参照してください。

細心の注意を払いたい場合は、無視しているシンボル名がすべてのファイルで本当に冗長であることを最初に確認することをお勧めします。または、cvs2svn は同じ値で 2 回出現するシンボルを無視するため、不要なシンボル名を必要なシンボル名に変換することもできると思います。これには次のようなものが必要です

RegexpSymbolTransform(r'X', r'Y')

次に、IgnoreSymbolTransform を使用して余分なシンボルを非表示にしました。

さらに、HEAD でパッチが適用されたファイルが原因で二次エラーが発生し、新しいインポートが発生しました。ファイルを強制的にコミットすることで、ファイルを HEAD に戻し、これを回避することができました。

エラー: ファイル '/home/cvs/src/contrib/one-true-awk/FIXES,v' のデフォルトのブランチは 1.1.1 ですが、リビジョンも 1.2 です

于 2013-11-27T03:57:51.953 に答える