私の知る限り、Subversion で分岐とマージを処理する最も一般的な (そして推奨される) 方法は次のとおりです。
- トランクのコピーとしてブランチを作成する
- ブランチで破壊的開発を行い、トランクで通常の開発を行う
- そうしている間、定期的に変更をトランク -> ブランチにマージして、ブランチが分岐しすぎないようにします。マージ トラッキング (
svn:mergeinfo
) を使用すると、 を実行するだけでsvn merge ^/trunk
、SVN がマージされていないすべての変更をトランクから自動的にフェッチします。 - ブランチでの作業が完了したら、すべてを (trunk: で
svn merge --reintegrate ^/branch/foo
) マージし直してから、ブランチを破棄します。
(たとえば、SVN ブックのBasic Mergingの章で説明されています)。
さて、私の問題:これは「機能ブランチ」ではうまく機能しますが、「リリースブランチ」も必要になる場合があります。これは、出荷中/出荷予定のバージョンを表します。
リリース ブランチでは、私の経験ではマージは双方向で行われなければなりません。
- リリース ブランチからのバグ修正はトランクにマージする必要があります (ブランチ -> トランク)
- ただし、トランク (または新機能) からのバグ修正がリリース バージョン (またはリリースの更新) にとって重要であると見なされる場合があるため、トランク -> ブランチにマージする必要があります。
SVNがこれをどのように処理するかについて、確固たるものは見つかりませんでしたsvn:mergeinfo
。両方向にマージ (「双方向マージ」) しても、マージされたリビジョンを svn に追跡させることはできますか?
落とし穴はありますか?特に注意すべきことはありますか?