在提交之前显示合并历史记录

时间:2013-05-22 07:28:16

标签: svn merge revision-history

svn log有一个--use-merge-history选项,显示属于合并的所有修订。

在我提交之前,如何获得工作副本中合并的相同信息?

E.g。在我运行svn merge ...(同步合并)之后但在运行svn ci之前,我想查看并总结提交消息的日志。

1 个答案:

答案 0 :(得分:3)

有趣的问题。不幸的是,命令行工具显然不直接支持这个用例。但是,您可以编写一个脚本,该脚本使用svn mergeinfo的输出并将其提供给svn log以获取此信息。以下bash脚本可能是一个很好的起点。

#! /bin/bash
source="^/trunk"
url="$( svn info | sed -ne '/^URL: /s///p' )"
mergeinfo=(svn mergeinfo --show-revs=merged "$source")
revs=($( diff <( "${mergeinfo[@]}" ) <( "${mergeinfo[@]}" "$url" ) |
        sed -ne '/^< r\([0-9]\+\)$/s//-c \1/p' |
        tac ))
[[ -n "$revs" ]] &&
svn log "${revs[@]}" "$source"

更新:棘手的部分是找出哪些修订已合并到工作副本中,并且尚未提交。上述脚本通过以下方式解决了此问题:首先,它确定已在工作目录中合并的所有修订 - 包括已提交和未提交的合并。其次,它确定所有已提交的合并。最后它计算了这两组的差异。

相关问题