Web アプリケーション プロジェクトの最適な分岐戦略を決定しようとしています。これが私がこれまでに思いついたことです。コメントや経験をいただければ幸いです。
私の見方では、「リリースによる分岐」と「機能による分岐」という 2 つの主要な分岐戦略があります。
"Branch by release" : 開発はトランク上で行われます。リリースの時期が近づくと、そのリリース用のブランチが作成されます。その後、このブランチは安定化/テストされ、最終的にリリースされます。リリース後、ブランチはトランクにマージされますが、バグ修正のためにリリース ブランチは維持されます。バグ修正が適用されている場合は、トランクにマージされます (トランクの開発が他の方法でバグを覆い隠していない場合)。新機能はトランクに追加され、リリース ブランチには影響しません。新しいリリース時期が近づくと、新しいリリース ブランチが作成されます。
"Branch by feature" : トランクは常に "production" トランク (ライブのコード) です。バグ修正はトランクに直接コミットされます。次のリリースの機能は機能ブランチで開発されます。バグ修正は時々機能ブランチにマージされます。リリース時期になると、フィーチャー ブランチはトランクにマージされ、ライフ サイクルが継続します。
これら 2 つの戦略の実際的な大きな違いは、「リリースごとに」ソフトウェアのさまざまな製品バージョンを維持できることです (クライアント A がバージョン 1 でクライアント B がバージョン 1.5 の場合、クライアントはこれで有料の顧客です)。場合)。対照的に、「機能別」戦略を使用すると、現在の製品バージョンのみをサポートできます (すべてのクライアントが最新バージョンを使用しています)。
典型的なWeb アプリケーションでは、すべてのクライアントが同じ「最新」バージョンを使用しているため (すべて同じサーバーにアクセスするため)、「機能ごと」のアプローチが最も一般的に使用されていると思います。3 つのリリース バージョンすべてにバグ修正を適用する必要がある場合など、「階層全体」でマージする必要がなくなります。
したがって、私の現在のステータスは、「機能ごとに分岐」する必要があるということです。それが問題なら、私のチームはあまり熟練していません。