我觉得这个热曲需要一些(两步)编程。
下面的shell脚本对我来说工作得很好。它将打印修订版本和匹配行。如果你只是想修订列表,你可以添加一个步骤剥离匹配的文本,只留下修改的前缀,并且可能通过管道“排序-u”:
#!/bin/bash
#
# script to grep for a pattern in all revisions of a file
# Usage: scriptname 'pattern' filepath
#
function fatal() {
echo "[email protected]" 1>&2
exit 1
}
function usage() {
echo "[email protected]" 1>&2
fatal Usage: $0 pattern file
}
case "$1" in
'') usage 'missing pattern to search for' ;;
*) Pat="$1" ;;
esac
if [ "$2" != '' ]; then
File="$2"
else
usage 'must pass file as 2nd argument'
fi
# -- generate list of revisions (change-sets) involving $File
for rev in `hg log --template '{rev}\n' $File`; do
# -- grep the wanted pattern in that particular revision
hg grep "$Pat" -r $rev $File
done
注:
- 不完全万无一失(例如,在模式引号)
- 我不检查文件的存在,以支持重命名/删除文件以及
也许这是因为我在更高版本的TortoiseHg(3.2.3)上,但我不明白这是如何帮助隔离单个行的更改? (我再也找不到清单选项,但是从资源管理器/插件上下文菜单中注释文件的行为似乎是做了这个答案的建议,这就是文件如何看待各种修订;您仍然必须找到行在每个修订中的问题。) – downwitch 2015-10-08 22:03:57
失踪清单 - http://stackoverflow.com/questions/23457746/manifest-button-missing-in-tortoise-hg – Tom 2015-10-09 16:12:33