0

ソフトウェアベンダーの既存のソースコードに基づいてソフトウェア開発用のgitリポジトリをセットアップする必要があります。ソースコードは定期的に更新されていますが、私は最も効果的なアプローチを探しています。私は2つのモデルのモデルを考え出しています。私はあなたの意見を聞きたいと思います。状況。 A、B、CのGitブランチを構成する方法

ソースコードリポジトリ/チームAはベースのベンダーコードは終了です:

全体的には、それぞれ独自の別々のコードリポジトリで作業3つの完全に独立したチームが存在します。 ソースコードリポジトリ/チームBは、ベースのベンダーコードが第三者による拡張機能を終了する場所です。 ソースコードリポジトリ/チームC私がセットアップしようとしているものは、A + Bと独自の拡張機能に基づいている必要があります。

たびリポジトリAの変更、チームBからの人は、自分のリポジトリにそれを引っ張っ統合し、チームのためにそれを利用できるようになりますC.

チームBはまた、チームAから変更せずに(自分で独立したリリースを行うことができます)彼らはチームCのためにチームC.

に利用できるようになりますこれ、私がセットアップリポジトリ別々の枝になります

master 
TeamA 
TeamB 
develop 

支店TeamAとTeamBたち(チームC)によって管理されます - 私たちが更新されますいつでも私たち自身チームAとチームBからコードを受け取り、それらを統合して開発する。

目標は、TeamAとTeamB(そしてTeamAとTeamB間のdiff)の違いを理解し、チームAとBの変更を最も簡単に統合することです。マスター

master 
    TeamA 
    TeamB 
    develop 

または、2)に基づいて、すべての枝が枝の親子構造を以下の作る作る)

1:

私のセットアップ以下の場合の構造に関する何らかの違いがあるのだろうか

master 
    TeamA 
     TeamB 
      develop 

実用的な違いがあるのでしょうか。

誰も過去に似たような状況にあったのですが、どのようなアプローチをお勧めしますか?

答えて

0

Gitリポジトリでは、各ブランチが別々に動作します。したがって、実際に提供された2つの構造は他のものと同じように動作します。そしてあなたの支店構造はあなたのチームのために働くことができます(チームC)。

そして、あなたrepoCですることもでき免除TeamATeamB支店、直接developブランチにrepoAとrepoBから変更をプル:

git remote add -f teamA <URL for repoA> 
git checkout develop 
#Use git fetch teamA and git fetch teamB when there has new changes on repoA and repoB 
git pull teamA/master --allow-unrelated-histories 
git pull teamB/master --allow-unrelated-histories 
#After making changes and commit changes on develop branch 
git checkout master 
git merge develop 

注:あなたが使用分岐構造どんなにを、あなたは気づくべきです3つのreposには同じファイル/コードが含まれているため、コンフリクトをマージします。

+0

ありがとうございました。はい、私は解決しなければならない競合を認識しています。それはビジネスの一部です:-) Gitの親/子ブランチの後ろにマージ/ブラウズに役立つ追加機能はありません歴史を通して/ diff。 –

+0

ええ、ブランチは別のブランチから作成(チェックアウト)できますが、親子関係ではありません。両方のブランチは別々に作業します。 –

+0

答えが問題を解決するのに役立ちましたか?はいの場合は、マークすることができます。それは、同様の質問をした他の人を助けるでしょう。 –

関連する問題