我们需要将我们的分支合并回主干。
我们希望所有提交来自分支的消息也是im trunk。
所以我们可能需要分别合并每个修订版本,如:
原始提交消息: “修复了错误的错误”
合并后提交消息 “从分支合并:修复了错误的错误”
有人知道自动化的方法吗?
谢谢
答案 0 :(得分:2)
这不是你想要的,但我会告诉你如何获得你想要的信息,而不用任何麻烦的脚本。
自1.5.0以来的Subversion已经有--use-merge-history
或-g
选项进行记录。如果你进行合并,那么当你执行-g时,它将显示日志中合并修订版的日志消息。
E.G。你会得到这样的输出:
$ svn log -g ------------------------------------------------------------------------ r5 | breser | 2014-01-23 10:00:57 -0800 (Thu, 23 Jan 2014) | 2 lines Merged badbug branch ------------------------------------------------------------------------ r4 | breser | 2014-01-23 10:00:41 -0800 (Thu, 23 Jan 2014) | 2 lines Merged via: r5 Fix that bad bug ------------------------------------------------------------------------ r3 | breser | 2014-01-23 10:00:10 -0800 (Thu, 23 Jan 2014) | 2 lines Merged via: r5 Create badbug branch ------------------------------------------------------------------------ r2 | breser | 2014-01-23 09:58:07 -0800 (Thu, 23 Jan 2014) | 2 lines Add foo ------------------------------------------------------------------------ r1 | breser | 2014-01-23 09:57:51 -0800 (Thu, 23 Jan 2014) | 2 lines Create trunk and branches ------------------------------------------------------------------------
注意r3和r4如何具有Merged via:行。因为这些修订由r5合并回来,并且通过合并跟踪显示。
如果您不喜欢,那么您将需要编写一些内容来确定要合并的修订版本,然后对每个重复日志消息的内容进行合并。您可以使用svn mergeinfo --show-revs eligible ^/branches/source ^/branches/target
(其中源是您要合并的分支,目标是要合并的分支),以获取要合并的合格修订列表。然后,只需使用svn propget svn:log --revprop -r $REV
来获取提交消息,修改消息以添加标题,说明它是合并,运行svn merge -c $REV ^/branches/source ^/branches/target -m $MESSAGE
。
但在我看来,通过-g
处理客户可以为您做的事情需要做很多工作。