2012-07-05 38 views
6

我想爲一組指定的修訂版(或全部)搜索一個文件(最好是一組文件)的差異。我正在尋找可搜索文本的差異報告。我有這樣的:有沒有辦法爲一個文件的特定字符串搜索一組差異?

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

好了,這工作得很好,但在決定多少上下文包括是一個問題,也是發現第一個和最後的修訂。我可以更好地自動執行此操作,但似乎它會有點工作。

我想知道是否有一個工具可以做得更好。也許一個差異報告網頁的hg服務器?

回答

10

您可以使用hg grep搜索整個回購歷史記錄。

例如:

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

會發現'theSearch'所有實例回購的每一個版本。如果沒有--all標誌,它會停在包含該字符串的第一個修訂版本。

1

我有一種感覺,hg grep搜索整個文件的內容爲每個匹配的修訂。如果你想只搜索DIFF然而,嘗試這樣的事情:

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

這將列出包含「TODO」在他們的差異修訂。注意這也會搜索刪除的行以及diff的上下文(+/- 3行),所以它並不完美。

您可以使用args進一步限制diff() - 請參閱hg help template - 並使用revsets(-r ...)。

這可能比使用您的hg diff | grep方法更好,因爲它會逐個比較每個變更集,而不是將整個repo區分爲兩個變更集,並允許您使用revset過濾掉合併修訂版。

+0

''{節點} {desc} \ n''會更有用IMO – arhak 2017-03-15 14:42:26

+0

@arhak謝謝,編輯。 – 2017-03-29 16:26:19

相關問題