6

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

必要な変換は次のようになります。

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

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

CVS と SVN の両方のリポジトリは、同じ Linux マシン上にあります。

これはどのように行うことができますか?

また、CVS branchA が SVN トランクになり、他のすべての CVS ブランチが無視される変換で十分かもしれません。

4

7 に答える 7

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

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

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

于 2008-08-18T10:08:26.090 に答える
5

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

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

于 2008-08-18T09:34:58.280 に答える
1

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

于 2008-08-18T09:34:19.373 に答える
1

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

于 2008-12-03T18:57:14.127 に答える
1

受け入れられた回答をサポートするための追加情報:

cvs2svn は、トランクからブランチへ、またはブランチからトランクへの変換を許可しません

そのため、svn に変換したら移動するのが最善の方法です。

于 2008-09-24T19:47:36.657 に答える
1

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

--symbol-hints=symbol-hints.txtしかし、実際には、コマンドライン オプションまたは (変換にオプション ファイルを使用している場合)シンボルSymbolHintsFileRule('symbol-hints.txt')戦略ルールを使用して、必要な SVN パスにトランクとブランチを格納するように cvs2svn に指示できます。symbol-hints.txt次のように:

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

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

于 2008-10-17T10:09:23.943 に答える
0

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

于 2008-08-18T09:59:53.130 に答える