在 svn 书(http://svnbook.red-bean.com/en/1.7/svn.branchmerge.commonpatterns.html)中,在 Common Branching Patterns 部分中,它说:
主干被复制到“发布”分支。当团队认为软件已经准备好发布(比如 1.0 版本)时,/trunk 可能会被复制到 /branches/1.0。
团队继续并行工作。一个团队开始对发布分支进行严格的测试,而另一个团队继续在 /trunk 上进行新工作(例如,对于 2.0 版)。如果在任一位置发现错误, 则会根据需要来回移植修复程序。然而,在某些时候,甚至该过程也会停止。该分支在发布之前被“冻结”以进行最终测试。
(强调我的)。我假设维护分支与发布分支相同..?(我们需要在开发他们的下一个版本时让一个客户保持在以前的版本)。
我很确定我不应该使用--reintegrate
,但我不太确定如何以不会弄乱未来合并的方式进行合并。我是否需要手动跟踪修订范围?..或者颠覆会为我做这件事(我使用的是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
那么来自维护分支的未来合并将起作用(正确更新主干上的合并信息)而不会产生冲突:
trunk> svn merge .../branch1