9

我想在一个文件(最好是一组文件)的差异中搜索一组指定的修订(或全部)。我正在寻找可文本搜索的差异报告。我有这个:

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

好的,这很好用,但是决定包含多少上下文以及找到第一个和最后一个修订版是一个问题。我可以更好地自动执行此操作,但似乎需要做一些工作。

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

4

2 回答 2

11

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

例如:

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

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

于 2012-07-05T19:03:54.283 回答
4

我有一种hg grep在整个文件的内容中搜索每个匹配修订的感觉。而如果您只想搜索差异,请尝试以下操作:

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

这将列出其差异中包含“TODO”的修订。请注意,这还将搜索已删除的行以及差异上下文(+/- 3 行),因此它并不完美。

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

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

于 2017-01-04T13:41:13.730 回答