2009-07-20 16 views
6

この質問はthis onethis oneに似ていますが、シナリオは若干複雑です。git-svnはレイアウトを変更したsvnリポジトリでどのように動作しますか?

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

私は今のgitリポジトリに永続的にこれを変換したいと思います。私はgit-svnを使ってみましたが、一貫したトランク/ブランチ/タグの規約に従っているようです(はい、代わりの名前を付けることができますが、それぞれに1つしか表示されません)。私のリポジトリの歴史のかなりの部分は、タグ/とブランチ/サブディレクトリのように、リポジトリのルートに事実上トランクしています。

これをすべて処理するにはどうすればよいですか?理想的には、ブランチとタグがgitのファーストクラスのコンセプトとして適切に表現されていない場合でも、私はgitリポジトリを少なくともいくつかの方法ですべての履歴にアクセスできるようにしたいと思います。具体的には

、どのようにsvnの-gitがします、それが備えるの鼻/支店/タグのサブディレクトリ外のファイルを処理しますか?これまでのところ、時には間違っている(間違いなくOK)と思っていましたが、それ以外の時には新しいリポジトリに追加されました。

どのような考えにも感謝します。私の経験で

+0

あなたはそれが動作しますでしょうか尋ねるだけでなく、あなたがそれを試してみたと言います。あなたが観察した望ましくない行動の特定の例が役に立つでしょう。 Gitは通常、同じコミットでサブツリーを変更したり移動したりするなど、複雑なマージを処理するのに驚くほど優れています。 –

+0

OK - 私はそれを試しました。私は結果を完全に掘り下げたわけではないかもしれないが、git-svnがsvnルート(つまりトランク/ブランチ/タグディレクトリの外側)からいくつかのディレクトリを含むように見えるのは間違いない。なぜ私は混乱していた。 gitは複雑なマージを処理することができますが、この質問はgit-svnの詳細なものです。 –

+0

['subversion']タグの代わりに[' svn']タグを使用してください。http://meta.stackexchange.com/questions/2601/batch-retag-request-merge-svn-and-subversion –

答えて

2

、これを処理する唯一の方法は、時間を通してリポジトリの位置を追跡し、プロジェクトが一箇所に残っ期間ごとに別々のgit-svnのクローンを作ることです。

あなたが(または少なくともにまでさかのぼるあなたが気にすることができたように)時間に異なる段階のためのリポジトリを作成した後、あなたは一緒にリポジトリをグラフトすることができます。私はここに、この技術を実証するスクリーンキャストを作成しました

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

関連する問題