2012-05-03 45 views
23

我正在尋找解決這一問題的善變相當於:HG:找到已刪除的行取出

How do I "git blame" a deleted line?

總之,我在看一個善變的承諾,其中加入一行,而在目前的修訂版中,這一行不再存在,我想找出何時以及爲何將其刪除。

+0

不完全重複,但看到[這個問題](http://stackoverflow.com/questions/9725856/in-mercurial-how-can-i-find-changesets-that-c​​ontain-a-string)。 – shambulator

+3

精彩,這幫我從'hg show 9876:tip path/to/file | grep - 「pattern」-U20'到'hg grep -r 9876:tip「pattern」path/to/file',這正是我所需要的。如果您以此作爲答案,我會接受它。最初我沒有使用'--all'來嘗試它,認爲它是-r標誌的替代品,但發現它只列出第一個修訂版,除非指定了--all。 – undefined

+0

謝謝你的提議,Brian,但我只是指出你解決它的現有答案。寫一個簡短的答案和[給krtek一個upvote](http://stackoverflow.com/a/9726648/715075):) – shambulator

回答

24

hg grep可讓您搜索模式的更改日誌,例如已刪除的字符串。如果您正在尋找的不僅僅是第一次出現,請確保包含--all標誌。對我來說,它看起來是這樣的:

hg grep --all -r 9876:tip "pattern" path/to/file

由於安東的有益的意見和krtek他related answer

+1

'hg grep'已被重命名爲'hg histgrep'在此期間。除此之外,答案仍然有效。 – stigi

+0

@stigli:它有?我找不到任何參考,即使在最新的Mercurial(3.8.3+)中也是如此。 – jwd