2

私は(とりわけ)次の記号を持つCVSリポジトリの変換に取り組んでいます:

tcm-6.1.0-branch --ブランチ
tcm-6.1.0 --タグ

標準の変換を使用すると、cvs2svnはそれらを適切に識別します。ただし、変換中にクリーンアップを実行したいと思います。具体的には、ブランチシンボルの冗長な「-branch」部分を削除したいと思います。これは、svnの「branches」ディレクトリにあるためです。プロジェクトのsymbol_transformsに以下を追加しました。

RegexpSymbolTransform(r'(.*)-branch', r'\1')

tcm-6.1.0ブランチとタグの両方であるため、すべてのファイルに対して「エラー:シンボル'tcm-6.1.0'の複数の定義...」が表示されます。この問題を引き起こすCVSシンボルペアがいくつかあります。

ソースシンボルと宛先ディレクトリが異なるため、この操作が可能であるように思われます。私が見逃しているものはありますか、それともこれは単にcvs2svnの欠点ですか?

これらのシンボルの名前を変更して、それらが別々のままになり、同じ名前のブランチとタグになるようにするにはどうすればよいですか?

-

回避策がない場合は、変換ルールから問題のあるシンボルを除外し、後で手動で移動しようとしますが、変換時に実行したいと思います。

4

2 に答える 2

1

RegexpSymbolTransformリポジトリ ファイルの解析中に、低すぎるレベルで動作します。したがって、a を使用SymbolTransformして 2 つのシンボルに同じ名前を付けると、それらは 1 つの同じシンボルとして扱われます。

変換後にブランチとタグの名前を変更することは可能ですが、これには履歴に永久に残る明示的な SVN コミットが必要になるため、履歴の調査が少し複雑になります。

代わりに、ブランチを元の名前で変換する必要がありますが、cvs2svn にそれを SVN パス /branches/tcm-6.1.0 に保存するように指示してください。そうすれば、シンボルは目的の名前を持つ SVN ブランチの適切な場所に配置されますが、同様の名前のタグとは異なるものとして cvs2svn によって処理されます。

これは、--symbol-hints=symbol-hints.txtコマンド ライン オプションまたはSymbolHintsFileRule('symbol-hints.txt')シンボル戦略ルールを使用して行うことができます。ここsymbol-hints.txtで、 は次のような行を含むファイルです。

. tcm-6.1.0-branch ブランチ /branches/tcm-6.1.0 .

cvs2svn私が考えることができるこのアプローチの唯一の欠点は、 (たとえば、ブランチの作成のために)によって自動生成される一部のコミット メッセージに、元のブランチ名が記載されることです。

于 2008-10-02T12:59:34.160 に答える
1

cvs2svn は、cvs と svn の間で多くの魔法を行います。そのため、cvs2svn はどのバージョンがどのディレクトリに属しているかがわからないため、ブランチとタグの名前を「一致」させることはできません。私のアドバイスは、後で svnmuccのようなツールを使用して単一のコミットで名前を変更することです。したがって、単一のコミットがあれば、すべてが整っています。

于 2008-10-01T17:48:19.183 に答える