svn log
有一个--use-merge-history
选项可以显示作为合并一部分的所有修订。
在提交之前,如何在工作副本中获得相同的合并信息?
例如,在我运行svn merge ...
(同步合并)之后但在我运行之前,svn ci
我想查看并总结提交消息的日志。
svn log
有一个--use-merge-history
选项可以显示作为合并一部分的所有修订。
在提交之前,如何在工作副本中获得相同的合并信息?
例如,在我运行svn merge ...
(同步合并)之后但在我运行之前,svn ci
我想查看并总结提交消息的日志。
有趣的问题。不幸的是,命令行工具显然不直接支持这个用例。但是,您可以编写一个脚本,该脚本使用 的输出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"
更新:棘手的部分是找出哪些修订已合并到工作副本中,而尚未提交。上面的脚本通过以下方式解决了这个问题:首先,它确定所有已在工作目录中合并的修订——包括已提交和未提交的合并。其次,它确定所有已提交的合并。最后计算这两组的差值。