2012-05-03 29 views
23

szukam Mercurial odpowiednik rozwiązania tej kwestii:HG: znaleźć gdzie usunięta linia została usunięta

How do I "git blame" a deleted line?

w skrócie, ja patrząc na Mercurial popełnić gdzie dodano linia , aw obecnej wersji tej linii już nie ma i chcę się dowiedzieć, kiedy i dlaczego została usunięta.

+0

Niezupełnie duplikat, ale zobacz [to pytanie] (http://stackoverflow.com/questions/9725856/in-mercurial-how-can-i-find-changesets-that-contain-a-string). – shambulator

+3

Cudownie, pomogło mi to uzyskać od 'hg show 9876: tip path/to/file | grep --all "wzorzec" -U20' na 'hg grep -r 9876: wskazówka" wzorzec "ścieżka/do/pliku', co było właśnie tym, czego potrzebowałem. Jeśli podasz to jako odpowiedź, zaakceptuję to. Oryginalnie próbowałem go bez '--all', myśląc, że był on substytutem dla opcji -r, ale odkrył, że zawiera ona tylko pierwszą wersję, chyba że podano' --all'. – undefined

+0

Dzięki za ofertę, Brian, ale tylko wskazałem ci istniejącą odpowiedź, która rozwiązała. Napisz krótką odpowiedź i [give krtek upvote] (http://stackoverflow.com/a/9726648/715075) :) – shambulator

Odpowiedz

24

hg grep pozwoli ci przeszukać dziennik zmian dla wzorca, takiego jak usunięty ciąg. Jeśli szukasz czegoś więcej niż tylko pierwszego wystąpienia, pamiętaj o włączeniu flagi --all. Dla mnie to wyglądało mniej więcej tak:

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

Dzięki Anton dla pomocnych uwag i Krtek dla jego related answer.

+1

'hg grep' został w międzyczasie zmieniony na' hg histgrep'. poza tym odpowiedź jest nadal ważna. – stigi

+0

@stigli: Ma? Nie mogę znaleźć żadnego odniesienia do tego, nawet w najnowszym Mercurial (3.8.3+). – jwd