2016-04-12 8 views
0

会社には大きなリポジトリがありますBIG-REPO私はすべてのアプリケーション、サービスツールなどのコードベースを保存しています。今私のチームはWebアプリケーションAに取り組んでいます。このアプリケーションは、BIG-REPOの他の部分に依存しています。のは、このメソッドを呼び出してみましょう、我々は我々のアプリケーションのための機能ブランチを共有しているマスターと同期する必要がある共有フィーチャブランチ

  1. :我々のチームで、私はプル要求にコードレビューを導入し、また、我々のアプリケーションのための安定したブランチを持つようにしたいので、私はこのワークフローを思い付きましたブランチウェブアプリケーションブランチ
  2. 各開発者はこのアプリケーションのいくつかの機能を開発中です。そうすると、彼はWebAppAからブランチを作成します。したがって、たとえばWebAppAFeatureAWebAppAFeatureBなどがあります。開発者は常にブランチをリモートにプッシュし、WebAppAにPRを発行します。私はコードレビュー&マージ変更を行います。また、開発者は、WebAppAにリベースして、機能ブランチを更新します。これまでのところとても良いですか?
  3. しかしWebAppAは、他のチームによって開発されたリポジトリの他の部分、上の依存関係を持っているので、私達は時々私達のWebAppAブランチに(マスターに既にある)自分の変更を組み込む必要があります。そして今私が持っている質問:それを安全にする方法は?それも可能ですか?私が見

オプションは次のとおりです。

A)WebAppAマスターをマージします。欠点:私は、コミットをマージしています。また、私がWebAppAに戻ってに戻ってマージする必要があるときに何が起こるのかも分かりません(例えば、マイルストーンが完成したときなど)。それは大丈夫/安全でしょうか?それは歴史の中で厄介に見えます:最初にマスターWebAppAにマージします。

b)リベースWebAppAからです。私がgitの仕組みを理解しているから、これは常に変化する災害です。WebAppAそして、これは共有ブランチであるため、すべてを破壊します(Rebaseのゴールデンルール)。

私には他に考えがありません。助言してもらえますか?

答えて

0

ビルドツール、言語ツール、またはgitサブモジュールを使用してリポジトリを分割し、依存関係を指定するのとは別に、あなたのソリューション(マージあり)は可能であるようです。

双方向マージは扱いにくいかもしれませんが、このような状況では回避できません。それは常にWebAppAとその機能ブランチの歴史を書き換え、それはこれらの枝のどの部分で動作するように持っている人のために苦痛になるよう

リベースは、noオプションではありません。

+0

他のコメントに書いたように - デポを分割して依存関係を管理するための解決策は何も議論の余地がありませんし、オプションではありません:) – dragonfly

2

Gitサブモジュールを検討しましたか? https://git-scm.com/book/en/v2/Git-Tools-Submodules - WebAppAの作業ディレクトリ(またはその逆)にマスターを入れ子にして、履歴を絶えず変更するという災害を引き起こすことはありません。

変更の特定のdiff(git用語ではblob)のみを追跡するため、WebAppAの何かが変更された場合、データの特定の「BLOB」のみがコミットされ、他のファイルに影響を与えます。

小規模なプロジェクトを独自のレポとして保存するには、コードベースをBIG-REPOに分割してサブモジュールを使用して結合することを強くおすすめします。

希望すると便利です。

+0

Repoは固定されています。小さなプロジェクトに分割することはできません。サブモジュール - これも使用できません。コーポレートルール.... – dragonfly

関連する問題