Gitまたは(バージョンにもっと興味がありますが、比較は間違いなく役立ちます)のいずれかを使用して次のワークフローを実現するための好ましい方法は何ですか?Subversion Git
最近製品のメジャーリリースがあり、と呼ばれる特定のポリシヒンブランチがあるとしましょう
release-2.0.x。その後、開発が継続され、いくつかの機能ブランチがに統合されました
master/trunk(これらは後で今後の一部になりrelease-2.1.xます)。現在、ある時点で別の機能(つまり、
critical-feature)が開発され、にマージされましたmaster/trunk。この機能は非常に重要であるため、にバックポートする必要があることを認識していrelease-2.0.xます。
これは、説明されているケースの小さな疑似図です。一番上のすべてがrelease-2.0.x現在master/trunkとの間のツリーの違いをもたらし、マージの問題につながることに注意してください(そうでなければ、単純にマージしcritical-featureてこの質問を書かないようにすることができます:)
(features added since 2.0.x, which
should not be backported)
^ ^ ^
| | | (code refactorings done
| | | in master/trunk)
\ | / (*) (*) (*)
-------------------------------------------------------> master/trunk
| |
| |
| |
\ release-2.0.x \ critical-feature
(should be backported)
質問:
VCS観点から機能のバックポートを実行するための最良の方法は何でしょうか?これは、競合を解決する競合を伴う
merge対応するブランチの単純なものとして実行する必要がありますか?critical-featureまたは
cherry-pick、これはコミットのとして実行する必要があります。コミットは、実行時ににマージcritical-featureさmaster/trunkれますか?または、ブランチcherry-picks内の各コミットのセットとしても使用できますか?critical-feature紛争解決の手順について何かアドバイスをいただけますか?
release-2.0.xとの現在の違いが非常に大きく、「ナイーブ」なバックポートがコードのリファクタリングや機能の欠落、またはの後に追加されたmaster/trunkために大量の競合を引き起こす場合は、どうすればよいですか?APIrelease-2.0.x標準的なマージまたはチェリーピッキングのアプローチを除いて、このルーチンに提供する特定の何かがあります
Gitか?競合の量が膨大な場合、リベースSubversionは役に立たないと思いますが、明らかに、私は間違っている可能性があります。