有没有办法搜索文件的特定字符串的一组差异?

时间:2012-07-05 17:35:40

标签: mercurial

我想为一组指定的修订版(或全部版)搜索一个文件的差异(理想情况下是一组文件)。我正在寻找可搜索文本的差异报告。我有这个:

hg diff -r 0:47131 .\TheFile.cs | grep 'theSearch' -Context 50

好的,这很好用,但决定要包含多少上下文是一个问题,同时找到第一个和最后一个修订版。我可以更好地自动化,但看起来它会有点工作。

我想知道是否有一个可以做得更好的工具。也许是hg服务器的差异报告网页?

2 个答案:

答案 0 :(得分:10)

您可以使用hg grep搜索整个回购历史记录。

例如:

hg grep --all --include .\TheFile.cs 'theSearch'

将在回购的每个修订版中找到'theSearch'的所有实例。如果没有--all标志,它将在包含字符串的第一个修订版处停止。

答案 1 :(得分:2)

我感觉hg grep搜索每个匹配修订版的整个文件的内容。而如果你只想搜索差异,尝试这样的事情:

hg log --template "{ifcontains('TODO', diff(), '{node} {desc}\n', '')}"

这将列出包含" TODO"的修订版。在他们的差异。请注意,这也会搜索删除的行以及差异上下文(+/- 3行),因此它并不完美。

您可以使用args进一步限制diff() - 请参阅hg help template - 并使用revsets(-r ...)。

这可能比使用hg diff | grep方法更好,因为它会逐个区分每个变更集,而不是将整个仓库分成两个变更集,并允许您使用revsets过滤掉合并修订,例如。 / p>