svn book ( http://svnbook.red-bean.com/en/1.7/svn.branchmerge.commonpatterns.html ) の Common Branching Patterns のセクションでは、次のように述べています。
トランクは「リリース」ブランチにコピーされます。チームがソフトウェアのリリース (たとえば、1.0 リリース) の準備が整ったと判断した場合、/trunk は /branches/1.0 にコピーされる可能性があります。
チームは並行して作業を続けます。あるチームはリリース ブランチの厳密なテストを開始し、別のチームは /trunk で新しい作業 (バージョン 2.0 など) を続けています。いずれかの場所でバグが発見された場合 、必要に応じて修正が移植されます。ただし、ある時点で、そのプロセスも停止します。ブランチは、リリース直前の最終テストのために「凍結」されています。
(強調鉱山)。メンテナンスブランチはリリースブランチと同じだと思います..? (次のバージョンを開発している間、1 人の顧客を以前のバージョンのままにしておく必要があります)。
を使用すべきではないことは--reintegrate
確かですが、将来のマージを台無しにしないような方法でマージを行う方法がよくわかりません。リビジョン範囲を手動で追跡する必要がありますか? ..またはSubversionがそれを行います(バージョン1.7.6を使用しています)。
[編集: 詳細]
trunk> svn mkdir c
trunk> touch a.txt b.txt c\d.txt
trunk> svn add a.txt b.txt c\d.txt
trunk> svn ci -m "initial trunk"
...
Committed revision 9580.
trunk> svn copy .../trunk .../branches/branch1 -m "create maint branch"
Comitted revision 9581.
trunk> svn rm c\d.txt
trunk> svn ci -m "Fix bug-1."
Deleting c\d.txt
Committed revision 9582.
branch1> svn merge .../trunk
--- Merging r9581 through r9582 into '.':
D c\d.txt
--- Recording mergeinfo for merge of r9581 through r9582 into '.':
U .
branch1> svn ci -m "Merged fix for bug-1 from trunk."
Deleting c\d.txt
Committed revision 9583.
branch1> svn propget svn:mergeinfo .
/svntests/trunk:9581-9582
trunk> svn up
Updating '.':
At revision 9583.
【オリジナル問題】
trunk> svn merge .../branches/branch1
--- Merging r9581 through r9583 into '.':
C c\d.txt
--- Recording mergeinfo for merge of r9581 through r9583 into '.':
U .
Summary of conflicts:
Tree conflicts: 1
[@JB Nizet からの修正]
trunk> svn merge -c 9583 --record-only .../branch1
--- Recording mergeinfo for merge of r9583 into '.':
U .
trunk> svn propget svn:mergeinfo .
/svntests/branches/branch1:9583
その後、メンテナンス ブランチからの将来のマージは、競合を発生させることなく機能します (トランクの mergeinfo を正しく更新します)。
trunk> svn merge .../branch1