2008-08-18 14 views
6

私は既存のCVSリポジトリからSVNリポジトリに変換しています。 CVSリポジトリにはいくつかのブランチがあり、変換中にブランチの名前を変更したいと思います。CVSからSVNへの変換と再編成ブランチ

募集変換は、このようなものです:

ある
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ブランチが無視される変換も十分です。

答えて

8
私は特にコミット履歴を保存することに興味があります。名前を変更して、変換後にSVNで枝を動かすと、履歴は保持されますか?

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

ブランチとタグを含むcvs2svnのリポジトリを変換することをお勧めします。リポジトリがSubversionに入ったら、必要に応じてブランチとタグを動かすことができます。これにより、実際のタグやブランチの名前が変更されてしまいます。これは後ほど歴史的な文脈で興味深いかもしれません。

+0

私はcvs2svnを使用していますが、特定のブランチとHEADを変換したいだけですが、cvs2svnはブランチの「除外」機能しか持っていません。 これで、もう1つのブランチでHEADをどのように変換できますか? – Oded

+0

私はそれをすべてダンプし、svndumpfilterを使用して、あなたが望まないものをフィルターにかけることができると思いますか? –

+0

私はsvndumpfilterが言及されていないブランチを削除するとは思わない。 他の解決方法をご存知ですか? – Oded

1

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

5

私はCVS - > SVN変換を行ってからしばらく経ちましたが、おそらく私が重要な分岐構造を持っていないので、さらに長い時間がかかりました。 SVNはディレクトリツリーをかなり簡単に移動できるので、まず変換全体を行い、後でSVN内で完全にトランク/ブランチ構造を整理することができます。

SVN内のディレクトリツリー全体を移動している場合は、ツリーの名前変更/移動のたびにコミットするのが最も良いでしょう。心に留めておくだけのもの。

0

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

1

受け入れ答えをサポートするためのいくつかの追加情報は:

cvs2svnは、ブランチまたはブランチにトランクからの変換は

をトランクに許可していませんので、あなたがSVNに変換していたら、物事を動かすことが最良です行く道。

1

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

しかし、あなたは確かに(コンバージョン用のオプションファイルを使用している場合)--symbol-hints=symbol-hints.txtコマンドラインオプションまたはを使って、あなたがしたいSVNパスに幹と枝を保存するためにSymbolHintsFileRule('symbol-hints.txt')シンボル戦略のルールをcvs2svnを伝えることができ、 symbol-hints.txtには、次のような行を含むファイルがどこにあるか:

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

は、一部がcvs2svnによって自動生成されたメッセージをコミットすることに注意してください(例えば、ブランチの作成のために)、元支店名を言及します。

1

変換後にブランチを移動することは可能ですが、cvs2svn構成ファイルを設定して、既存のブランチごとに正確に指定する方がよい場合があります。これの利点の1つは、FishEyeが出力をより良く理解できることです。

関連する問題