Github フローは機能ブランチを 1 つの製品に関連付けますが、実装できない理由はありません。ワークフロー オプションは、アプリケーションのデプロイ方法によって異なります。次の 3 つのコンポーネント サービスを持つ "MyApp" について考えてみましょう。
MyApp
|- ServiceA
|- ServiceB
|- ServiceC
とからServiceA
独立してデプロイでき、さらに重要なことに、MyApp に含まれているがどのリポジトリにも存在しないコードとは無関係にそれらすべてをデプロイできる場合は、好みのワークフローである Github フローを各リポジトリとチームに適用するだけです。ServiceB
ServiceC
Service*
サービスが非常に絡み合っていて、デプロイServiceA
に必ず のデプロイが必要な場合、ServiceB
またはさらに重要なことに、レポジトリMyApp
の 1 つが進むたびに進めなければならないかなりの量の足場コードまたはルーティング コードを表す場合は、 submoduleやsubtreeServices*
のようなものが必要になる場合があります。そのモデルでは、1 つの Github フローと、#4 と #5 の間に追加のステップ、つまりデプロイ前にサービスへのサブモジュール (またはサブツリー) の更新を収集します。あなた (およびあなたのチーム) が git を非常によく知っている場合を除き、サブツリーまたはサブモジュールなしでリポジトリをネストすることは避けます。
以上のことをすべて書きましたが、アプリケーションを分割する動機を深く検討することをお勧めします。これには利点とワークフローの成功がありますが、コストがかかります。履歴の「全体像」を把握することはより困難です。特定の状況では、次のようなツールを使用してデバッグするのが難しくなる可能性がありますgit bisect
。新しい開発者はそれぞれ、コードベースを快適に操作できるようになる前に、git インフラストラクチャを学習する必要があります。これらは計画を放棄する理由ではなく、考える材料にすぎません。