4

svn log有一个--use-merge-history选项可以显示作为合并一部分的所有修订。

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

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

4

1 回答 1

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"

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

于 2013-05-22T18:37:31.323 回答