【发布时间】:2014-01-23 17:03:37
【问题描述】:
我们需要将分支合并回主干。
我们希望所有来自分支的提交消息也来自主干。
所以我们可能必须单独合并每个修订,例如:
原始提交消息:“修复了那个错误”
合并后提交消息“从分支合并:修复了那个错误”
有人知道自动化的方法吗?
谢谢
【问题讨论】:
我们需要将分支合并回主干。
我们希望所有来自分支的提交消息也来自主干。
所以我们可能必须单独合并每个修订,例如:
原始提交消息:“修复了那个错误”
合并后提交消息“从分支合并:修复了那个错误”
有人知道自动化的方法吗?
谢谢
【问题讨论】:
这不是您想要的,但我将向您展示如何获得您想要的信息,而无需编写任何脚本。
从 1.5.0 开始的 Subversion 具有 --use-merge-history 或 -g 选项来记录。如果您进行合并,那么当您执行 -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 为您做的事情需要做很多工作。
【讨论】: