当社は現在、単純なトランク/リリース/ホットフィックス分岐モデルを使用しており、どの分岐モデルが会社または開発プロセスに最適かについてアドバイスを求めています。
ワークフロー/分岐モデル
以下は、これについて私が見た3つの主な説明ですが、それらは部分的に互いに矛盾しているか、(以下で説明するように)発生した後続の問題を整理するのに十分ではありません。したがって、これまでのところ、私たちのチームはそれほど優れたソリューションではないとしています。あなたはもっと良いことをしていますか?
マージとリベース(複雑な履歴と順次履歴)
pull --rebase
タスクが完了するまで、メインラインにマージして待機する必要がありますか?個人的には、どのベースでタスクが開始および終了したかを示す視覚的なイラストが保存されるため、私はマージに傾倒していますmerge --no-ff
。この目的のためにも、私は好んで使用しています。ただし、他の欠点もあります。また、マージの有用な特性を理解していない人も多くいます-それは可換ではありません(トピックブランチをマスターにマージしても、マスターをトピックブランチにマージすることを意味するわけではありません)。自然なワークフローを探しています
私たちの手順は単純なルールでは特定の状況を捉えていないため、時々間違いが発生します。たとえば、以前のリリースに必要な修正はもちろん、必要なすべてのブランチに上流をマージできるように十分に下流に基づいている必要があります(これらの用語の使用法は十分明確ですか?)ただし、開発者がそれがさらに下流に配置されているはずであることに開発者が気付く前に、修正がマスターに組み込まれ、それがすでにプッシュされている場合(さらに悪いことに、マージまたはそれに基づくもの)、残りのオプションはチェリーピッキングであり、関連する危険。このような単純なルールを使用しますか?これには、他のトピックブランチを必ず除外する1つのトピックブランチのぎこちなさも含まれます(それらが共通のベースラインからブランチされている場合)。開発者は、機能を完成させて、今書いたコードがもう存在しないような別の感覚を開始したくない
(cherry-pickによる)マージの競合を回避する方法
マージの競合を発生させる確実な方法は、ブランチ間でチェリーピックすることです。ブランチを再びマージすることはできませんか?どちらのブランチでも、リバートで同じコミットを適用すると(これを行う方法は?)、この状況が解決される可能性がありますか?これは、私が大部分がマージベースのワークフローを敢えて推し進めない1つの理由です。
局所的な枝に分解する方法は?
トピックブランチから完成した統合をアセンブルすることは素晴らしいことだと認識していますが、開発者による作業は明確に定義されていないことがあり(「ポーキング」のように単純な場合もあります)、コードがすでに「その他」のトピックに入っている場合は、上記の質問によると、それを再びそこから取り出すことはできませんか?トピックブランチの定義/承認/卒業/リリースをどのように行いますか?
コードのレビューや卒業などの適切な手順はもちろんすばらしいでしょう。
しかし、これを管理するのに十分なほど絡み合っておくことはできません。何か提案はありますか?統合ブランチ、イラスト?
以下は関連する質問のリストです:
- デプロイされたアプリケーションをホットフィックス可能にするための良い戦略は何ですか?
- 社内開発でのGit使用のワークフローの説明
- 企業のLinuxカーネル開発のためのGitワークフロー
- 開発コードと製品コードをどのように維持しますか?(この PDFに感謝!)
- gitリリース管理
- Git Cherry-pickとマージのワークフロー
- 複数のコミットを選択する方法
- 選択したファイルをgit-mergeでどのようにマージしますか?
- 一連のコミットを選択して別のブランチにマージする方法
- ReinH Gitワークフロー
- 元に戻さない変更を行うためのgitワークフロー
- マージをチェリーピックする
- OSとプライベートコードを組み合わせた適切なGitワークフロー?
- Gitでプロジェクトを維持する
- 変更された親/マスターでGitがファイルの変更をマージできないのはなぜですか。
- Gitのブランチ/グッドプラクティスのリベース
- 「git pull --rebase」を実行するといつ問題が発生しますか?
- 大規模なチームでDVCSはどのように使用されますか?
また、Plastic SCMがタスク駆動開発に書き込む内容を確認し、Plasticを選択しない場合は、nvieの分岐モデルとそれをサポートするスクリプトを調べてください。