6

この質問はこれこれに似ていますが、シナリオは少し複雑です。

私は数年前にプライベートsvnリポジトリ(主にさまざまなマシン間で共有される設定ファイルなどに使用します)から始めました。リポジトリのレイアウト(ブランチ、移動など)にはあまり注意を払っていなかったので、時間の経過とともにかなり変化しました。もちろん、これは間違いでしたが、今では手遅れです。最近、私はそれをより標準的なsvn trunk / branchs / tagsレイアウトに移行しましたが、主にsvn moveコマンドを使用していますが、もちろん古い履歴はリポジトリに残っています(率直に言って、少し混乱しています) 。

これを永続的にgitリポジトリに変換したいと思います。git-svnを使用してみましたが、一貫したトランク/ブランチ/タグの規則に従っている状況のみを処理しているようです(はい、代替名を指定できますが、それぞれに1つしか表示されません)。私のリポジトリの履歴のかなりの部分は、たとえば、サブディレクトリとしてtags/とbranchs/を使用して、リポジトリのルートに効果的にトランクを持っています。

これらすべてを処理するための最良の方法は何ですか?理想的には、ブランチとタグがgitでファーストクラスの概念として適切に表現されていない場合でも、最終的にgitリポジトリに何らかの方法ですべての履歴にアクセスできるようにしたいと思います。

より具体的には、svn-gitは、提供されているトランク/ブランチ/タグサブディレクトリ外のファイルをどのように処理しますか?これまでの私の観察では、それらを見逃すことがあり(間違いなくOKではない)、新しいリポジトリに追加することもあります。

どんな考えでもいただければ幸いです。

4

1 に答える 1

3

私の経験では、これを処理する唯一の方法は、リポジトリの場所を常に追跡し、プロジェクトが 1 つの場所に留まっている期間ごとに個別の git-svn-clone を作成することです。

さまざまな段階のリポジトリを作成した後 (または、少なくとも気にすることができる限りさかのぼって)、リポジトリを一緒に移植できます。

ここで、この手法を示すスクリーンキャストを作成しました。

http://blog.tfnico.com/2010/10/gitsvn-6-grafting-together-svn-history.html

于 2011-05-24T14:52:57.407 に答える