4

私はGitに移行しているSVNのプロジェクトを持っています。プロジェクトは「コア」製品(トランクの下)で構成され、同じリポジトリ内で分岐され、製品をロールアウトする個々のクライアントごとにカスタマイズするための開始点として使用されます。

これらはトランクにマージされることは決してないため、実際のブランチではないように思われます。また、「トランク」リポジトリにリンクしている履歴とプルする機能を備えた独自のリポジトリに住んでいる方がよいでしょう。必要に応じてトランクからの変更で(もちろんgitで簡単に実行できます)。

少し複雑なのは、あるクライアントが独自のプロジェクトのブランチを持っていることです。これは、ある時点でそのクライアントのメインブランチにマージされるという意味で「実際の」ブランチです。

うまくいけば、物事をより明確にするために、SVN構造は次のとおりです。

  • 「プロジェクト」リポジトリ
    • トランク
    • ブランチ
      • Client1(Trunk v100から分岐)
      • Client2(Trunk v150から分岐)
      • Client2-ブランチ(Client2 v200から分岐)
      • Client3(Trunk v150から分岐)

そして、私が行きたい構造は

  • 「プロジェクト」リポジトリ

  • Client1リポジトリ(SHA123からフォーク)

  • Client2リポジトリ(SHA456からフォーク)

    • Client2-ブランチ(SHA456789から分岐)
  • Client3リポジトリ(SHA789からフォーク)

誰かがこれを行うための良い方法をお勧めできますか?私はGitの初心者ではなく、フィルターブランチを知っています。この構造を取得し、可能な限り多くの履歴を保持するためにどのような方法をとるべきかわかりません。

ありがとう

4

2 に答える 2

4

本当にこれを実行したい場合は、リポジトリのクローンを作成し、それぞれの無関係なブランチを削除してください。

しかし、現在の状況は問題ないようです。あるリポジトリから別のリポジトリにパッチをチェリーピックしたくないと思いますか?

于 2010-10-22T11:02:21.627 に答える
1

svn2gitを使用して、ブランチを独自のリポジトリに複製できます。

svn2git svn://project/branches/client1 --rootistrunk

分岐したリポジトリにしたいブランチごとに、次に

svn2git svn://project/trunk --rootistrunk

トランク用。

私は非常に大きなsvn->git変換に対して同様のことをしました。

于 2010-10-23T01:08:59.830 に答える