私の製品に最も適したGitワークフローを選択しようとしています。パラメータは次のとおりです。
これまでのところ、これがうまくいくと私が思う方法です:
私はいくつかの懸念があります:
私が見落としたかもしれないこと、または私が指定した要件を前提として物事を達成するためのより良い方法についてコメントをいただければ幸いです。
メジャーリリース(12.0.0)ごとに分岐しているようで、それぞれのマイナーアップデート(12.1.0)とホットフィックス(12.2.1)を持っているようです。正しい?
どのモデルでも、複数の分岐ブランチ間の変更を長期間調整することが難しいという事実を除いて、リリースがリリースされた後、GitFlowでリリースブランチを存続させることができない特定の理由はありません。また、GitFlowは、次の開発中に単一のライブリリースを維持する製品用にさらにモデル化されたと思います。
私はGitFlowに固執し、いくつかの修正を加えます。
Masterブランチをスキップします。これまでのところ、これを実際に使用したことはありません。そのため、作業方法の直線性が失われます。開発の次のメジャーリリースで開発を続けます。マスターを維持することにした場合は、リリースタグをマスターに置かず、出荷するバイナリを生成したリリースブランチの最後のコミットに配置します。
リリースブランチをマージして開発した後、リリースブランチを捨てないでください。代わりに、次のマイナーリリースと可能なホットフィックスのためにそれらを保持します。リリースのサポートを停止した場合は、それらを削除しても問題ないと思います。リリースブランチの名前は、メインコンポーネントrelease/12にちなんで付け、次にサブリリースブランチrelease/12.1、release/12.2を作成します。私はこのレベルの並列処理についてあまり心配する必要はありませんでしたが、おそらくそれを試してみました。この場合、各メジャーリリースブランチを独自のサブGitFlow環境と考えることができます。
将来のいくつかのメジャーリリースの機能を同時に並行して作業する必要がある場合は、次のリリース(13)を開発に、それ以降のバージョン(14、15)を追加の "develop-N"ブランチに維持する必要があるかもしれません。 。これは一般に維持するのが非常に難しいように見えますが、可能です。
あなたの主な問題の考えられる解決策("同時に複数のリリースで作業できるようにする必要がある[...]")がおかしくなっているようです- git worktree add <path> [<branch>]
gitリポジトリは複数の作業ツリーをサポートできるため、一度に複数のブランチをチェックアウトできます。
git worktree add
を使用すると、新しい作業ツリーがリポジトリに関連付けられます。この新しい作業ツリーは、「
git init
」または「git clone
」によって作成された「メイン作業ツリー」ではなく、「リンクされた作業ツリー」と呼ばれます。
リポジトリには、1つのメイン作業ツリー(ベアリポジトリでない場合)と0個以上のリンクされた作業ツリーがあります。
git worktree
の詳細については、 this SO answer を参照してください。
あなたはgitflowに精通していると述べました。私はあなたのシナリオにそれを採用することをお勧めします。古いバージョンをサポートするには、開発ブランチからブランチを作成する必要があります。これらの古いバージョンには、独自のリリース/マスターブランチとホットフィックスブランチも必要です。サポートブランチを新しいサポートブランチと開発ブランチに定期的にマージする必要があります。
メジャーバージョンの開発が分かれるにつれて、これはさらに難しくなります。これには特効薬はありません。手動で変更する方が簡単な場合があります。古いバージョンを維持するためのコストは増加し、いつかは価値がなくなります。
古いバージョンでどのような変更を加えているかによります。バグ修正のみであれば、マージは比較的簡単です。新しい機能を追加しようとすると、難しいでしょう。