私は現在、私の会社でsvnからgitへの切り替えの過程にあります(1年後に、人々を説得するために費やしました!)。
これまでのところ、これですべてが良くなりますが、私たちが現在ワークフローに持っている小さなものの1つで、私には適切な同等のものを見つけることができません。
現在、すべての開発者はマスターで作業しています。四半期ごとに、マスターをXxブランチにブランチします。Xxブランチは後で最新のリリースになります。これは、svnリポジトリが次のようになることを意味します。
- トランク
- 枝
- 3.8
- 4.1
- 4.2
- ...
実際にはタグを使用しません。
時々、発見された緊急のバグ修正があります。
私たちがそれを行う現在の方法は次のとおりです。
- マスターで修正する
- SVNは、関連するコミットの範囲を関連するブランチにマージします(おそらく、最新のリリースなど)。
私たちは宇宙産業にいるので、支社は長命であり、顧客のアップグレードプロセスはかなり長いので、これまでのところ、そのように取り組んできました。
さて、gitでどのようにして良い同等物でしょうか?
これまでのところ、マスターから生成されたブランチのバグを修正してから、このブランチをマスターと4.3にマージしました(たとえば)。ことは、ホットフィックスブランチにはマスター履歴が含まれており、マスターと4.3の間のすべてのコミットもマージされるためですが、これは不要です。
これまでに考えたこと:
- 私は非常に成功したGitワークフローメソッドを見てきましたが、それらの解決策は、リリースブランチのバグを修正して、逆にマージするのではなく、マージすることです。これは私たちのケースではうまくいくかもしれませんが、実際にバグを修正する前に、バグを修正したい最も古いブランチをすでに知っている必要があるため、かなり面倒です。
- もう1つの解決策は、マスターで修正してからコミットを選択することです(今日のsvnマージの場合と同様)。ここでの厄介なことは、この場合、チェリーピックが新しいコミットのように見え、関係が失われるため、マージされたものの履歴がどこで失われるかということです。
それを行うための「良い」方法は何ですか?履歴のコミットを修正するか、チェリーピックを使用して、マージされたものや他の何かを手動で追跡する必要がありますか?
gitでの制作経験がほとんどない場合、私は何かを見逃している可能性があります。