svn log
有一个--use-merge-history
选项,显示属于合并的所有修订。
在我提交之前,如何获得工作副本中合并的相同信息?
E.g。在我运行svn merge ...
(同步合并)之后但在运行svn ci
之前,我想查看并总结提交消息的日志。
答案 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"
更新:棘手的部分是找出哪些修订已合并到工作副本中,并且尚未提交。上述脚本通过以下方式解决了此问题:首先,它确定已在工作目录中合并的所有修订 - 包括已提交和未提交的合并。其次,它确定所有已提交的合并。最后它计算了这两组的差异。