2012-05-03 7 views
23

entfernt wurde ich für die Quecksilber-Äquivalent der Lösung auf diese Frage suchen:HG: finden, wo eine gelöschte Zeile

How do I "git blame" a deleted line?

Kurz gesagt, ich bin auf der Suche in einem Mercurial begehen, wo eine Linie hinzugefügt wurde und in der aktuellen Revision ist diese Zeile nicht mehr vorhanden, und ich möchte herausfinden, wann und warum sie entfernt wurde.

+0

Nicht ganz ein Duplikat, aber siehe [diese Frage] (http://stackoverflow.com/questions/9725856/in-mercurial-how-can-i-find-changesets-that-contain-a-string). – shambulator

+3

wunderbar, das half mir von 'hg show 9876: tipppfad/zu/datei | grep --all "pattern" -U20' zu 'hg grep -r 9876: tipp" pattern "pfad/zu/file', was genau das war, was ich brauchte. Wenn du das als Antwort gibst, werde ich es akzeptieren. Ursprünglich habe ich es ohne "--all" versucht, weil ich dachte, dass es ein Ersatz für das Flag -r ist, fand aber heraus, dass es nur die erste Revision auflistet, wenn nicht --all angegeben wird. – undefined

+0

Danke für das Angebot, Brian, aber ich habe dich nur auf eine bestehende Antwort hingewiesen, die es gelöst hat. Schreibe eine kurze Antwort auf und gib [krtek upvote] (http://stackoverflow.com/a/9726648/715075) :) – shambulator

Antwort

24

hg grep können Sie ein Änderungsprotokoll für ein Muster, z. B. eine gelöschte Zeichenfolge suchen. Wenn Sie mehr als nur das erste Vorkommen suchen, achten Sie darauf, die --all Flagge zu enthalten. Für mich sah es so etwas wie dieses:

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

Dank Anton für die hilfreichen Kommentare und krtek für seine related answer.

+1

'hg grep' wurde in der Zwischenzeit in' hg histgrep' umbenannt. Außerdem ist die Antwort immer noch gültig. – stigi

+0

@stigli: Es hat? Ich kann keinen Hinweis darauf finden, auch nicht im neuesten Mercurial (3.8.3). – jwd