私は長い間 Perforce を使用してきたので、私のコメントは少し Perforce 中心であるかもしれませんが、基本原則は適切な分岐を備えたすべての SCM ソフトウェアに適用されます。私は、分岐開発プラクティスを使用することを強く信じています。今から永遠にコードベースを表す「メイン」(別名「メインライン」) があります。目的は、これがほとんどの場合安定していることです。プッシュが発生した場合は、システムの現在の機能を反映するリリースをいつでもカットできます。それらの厄介なセールスマンは尋ね続けます....
開発は、MAIN から分岐した分岐で行われます (通常は、既存の dev 分岐から分岐したい場合があります)。MAIN から dev ブランチにできるだけ頻繁に統合して、あまりにも分岐しすぎないようにします。または、後でより長い統合期間の予算を立てることもできます。新しい機能を MAIN に統合するのは、それが次のリリースでリリースされることが確実な場合に限ってください。
最後に、リリースごとに異なるブランチを選択できる RELEASE 行があります。SCM ソフトウェアのラベル付け機能、およびメジャー リビジョンとマイナー リビジョンの違いに応じて、いくつかの選択肢があります。したがって、たとえば、すべてのポイント リリースのリリース ブランチを選択したり、メジャー リビジョン番号のみを選択したりできます。あなたのマイレージは異なる場合があります。
一般に、MAIN からリリースへの分岐はできるだけ遅くします。バグ修正と直前の変更は、後で MAIN に統合するために RELEASE に直接移動するか、すぐに統合をバックアップするために MAIN に移動することができます。厳格なルールはありません。最善の方法を実行してください。ただし、MAIN に送信できる変更がある場合 (たとえば、dev ブランチから、または MAIN の誰かによる「ちょっとした調整」)、前者を実行します。チームの働き方、リリースサイクルなどによって異なります。
たとえば、次のようなものがあります。
//MYPROJECT/MAIN/... - the top level folder for a complete build of all the product in main.
//MYPROJECT/DEV/ArseKickingFeature/... - a branch from MAIN where developers work.
//MYPROJECT/RELEASE/1.0/...
//MYPROJECT/RELEASE/2.0/...
重要なプロジェクトでは、おそらく一度に多数の DEV ブランチがアクティブになります。開発が MAIN に統合されてコア プロジェクトの一部になったら、できるだけ早く古い DEV ブランチを削除してください。多くのエンジニアは、DEV ブランチを自分の個人的なスペースとして扱い、時間をかけてさまざまな機能に再利用します。これを思いとどまらせてください。
リリース後にバグを修正する必要がある場合は、対応するリリース ブランチで修正してください。バグが以前に MAIN で修正されている場合は、コードが MAIN で大幅に変更されていない限り、全体を統合します。修正は異なります。
コードラインを実際に差別化するのは、コードラインを管理するために使用するポリシーです。たとえば、どのテストが実行されるか、誰が変更の前/後をレビューするか、ビルドが壊れた場合にどのようなアクションが発生するかなどです。通常、ポリシー (したがってオーバーヘッド) はリリース ブランチで最も強く、DEV で最も弱くなります。ここには、いくつかのシナリオを説明した記事と、他の便利なものへのリンクがあります。
最後に、最初は単純な構造から始めて、必要に応じて追加の開発およびリリースのみを導入することをお勧めします。
それが役に立てば幸いです。あまり明白なことを述べていません。