質問

既存の CVS リポジトリから SVN リポジトリに変換しています。CVS リポジトリにはブランチがほとんどないため、変換中にブランチの名前を変更したいと考えています。

必要な変換は次のとおりです。

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

つまり、CVS HEAD が通常のブランチになり、CVS ブランチA が SVN トランクになります。

CVS と SVN リポジトリは両方とも同じ Linux マシン上に存在します。

どうすればこんなことができるのでしょうか?

また、CVS ブランチ A が SVN トランクになり、他のすべての CVS ブランチが無視される変換でも十分な場合があります。

役に立ちましたか?

解決

私はコミット履歴を保存することに特に興味があります。変換後に SVN 内で名前を変更してブランチを移動した場合、履歴は保持されますか?

はい。また、Subversion はディレクトリ構造への変更を追跡し、ファイルがツリー内で移動された場合でもすべてのバージョン履歴が保存されます。

リポジトリを変換することをお勧めします cvs2svn, 、ブランチとタグを含む。リポジトリが Subversion に配置されたら、必要に応じてブランチとタグを移動できます。これにより、実際のタグとブランチの名前が変更された履歴も保持されるため、後で歴史的な文脈で興味深い場合があります。

他のヒント

CVS から SVN への変換を行ってからしばらく経ちましたが、自明ではないブランチ構造で変換を行ってからはさらに長い時間が経ったと思われます。SVN はディレクトリ ツリー内をかなり簡単に移動できるため、最初に変換全体を実行し、後で SVN 内でトランク/ブランチ構造全体を整理することもできます。

その時点に到達し、SVN 内のディレクトリ ツリー全体を移動している場合は、ツリーの名前変更/移動ステップごとにコミットするのがおそらく最善です。ただ覚えておいていただきたいことがあります。

Subversion ブランチはディレクトリであるため、インポートの完了後にブランチを移動するだけで、履歴は失われません。

受け入れられた回答を裏付ける追加情報:

cvs2svn では、トランクからブランチ、またはブランチからトランクへの変換は許可されません。

したがって、svn に変換してから移行するのが最善の方法です。

変換後にトランク ディレクトリとブランチ ディレクトリを移動することは可能ですが、これには SVN 履歴に残る明示的な変換後の SVN コミットが必要となり、履歴の探索が少し複雑になります。

しかし、実際には、 --symbol-hints=symbol-hints.txt コマンドライン オプション、または (変換にオプション ファイルを使用している場合) SymbolHintsFileRule('symbol-hints.txt') シンボル戦略ルール、ここで symbol-hints.txt は、次のような行を含むファイルです。

. .trunk. trunk branches/branchX .
. branchX branch trunk .

cvs2svn によって自動生成される一部のコミット メッセージ (ブランチの作成など) には、元のブランチ名が記載されることに注意してください。

変換完了後にブランチを移動することは可能ですが、既存の各ブランチに必要な名前を正確に指定するように cvs2svn 構成ファイルをセットアップする方がよい場合があります。この利点の 1 つは、FishEye が出力をよりよく理解できることです。

私はコミット履歴を保存することに特に興味があります。変換後に SVN 内でブランチの名前を変更したり移動した場合、履歴は保持されますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top