2016-07-21 9 views
0

現在私の組織ではSVNを使用してすべてのコードを管理しています。私たちはSVNに続く現在の階層はSVNからGITに移行する際の分岐構造

  • 親1
      • 開発
        • project1に
        • のProject2
      • RELEですASE
        • project1に
        • のProject2
    • タグ
    • トランク
  • parent2
      • 現像
        • プロジェクト3
        • プロジェクト4
      • 放出
        • プロジェクト3
        • プロジェクト4
    • gitのために移行中個の
    • タグ
    • トランク

は今、私はgitのでこれを置き換えるための最良の方法だろうかを知りたいですか? 「親」レベルは、プロジェクトをグループ化するだけです。これは省略することができます。プロジェクトには相互依存関係がある場合もあります。どんな提案もありがたいです

+0

分岐戦略は実際にGitやSVN自体に依存しません。あなたが望むならば、同じ戦略をGitで使うことができます。 Gitでは、ブランチを作成することはSVN(またはPerforce)のようなツールよりもはるかに安いことに注意してください。 –

+0

@TimBiegeleisenどのように私はgitでプロジェクトをグループ化し、後で私は親のすべてのプロジェクトをクローンできるはずです – jugal

答えて

0

それぞれのプロジェクトに別々のgitリポジトリを作成するので、別々のライフサイクルを持つことができます。

まず、branches/ディレクトリをフラット化する必要があります。事前にsvnに名前を変更してください(svn mv ^/parent1/branches/developer/project1 ^/parent1/branches/developer_project1など、次にsvn rm ^/parent1/branches/developer)。

その後、標準のsvn構造(/trunk/branches/tags)になり、単純に移行できます。 git svn cloneは上記のディレクトリ名を認識します(または、/parent1を含む-T,-t-b)と指定し、正しいことを行います。

+0

'developer/project1'のようなブランチ名はGitでうまくいきます。何も平らにする必要はありません。 – chepner

+0

@chepner 'git svn clone'は、' developer'と 'release'という2つのブランチがなく、* n *が' {developer、release}/xyz'をブランチしていないことを本当に理解していますか?それは、私が期待しているよりも魔法です。「git」のいつもの偉大さを知っていても。 ;) 'project1 /、project2/... 'を最上位のディレクトリとして、2つの枝を作ることが期待されますが、もちろん間違っています。あなたは精緻化できますか? – AnoE

+0

最終結果は許容されます。私は 'git svn'(または他の移行ツール)を使って実際にどのように実装するのかよくわかりません。 'clone'コマンド(' git svn clone --branches branches/developer --branches branches/release')で、さまざまなブランチディレクトリの名前を明示的に指定できます。私はGitの結果として得られるブランチ名が何であるか分かりませんが、それは正しい方向への一歩かもしれません。 – chepner