2013-07-03 3 views
5

ich mit TortoiseHg nach einem Weg suchen (oder schlicht hg, wenn keine andere Möglichkeit besteht) auf eine bestimmte Datei alle Änderungen zu lokalisieren.Suche alle Changesets in dem Namen Zweig wo Datei „X“ geändert wurde (einschließlich Verschmelzungen)

Ich habe versucht, eine Revisionssatzabfrage zu verwenden: merge() and file("path/to/filename.cs") aber das hat mich nicht bekommen, wonach ich suche. Es gibt eine leere Menge zurück. Ich nehme an, dies ist, weil merge() nur Merges zurückgibt, und file() nur (scheinbar) gibt Non-Merges zurück, so dass die Kreuzung leer ist.

ich auch modifies(pattern) habe versucht, aber das scheint nicht ausreichend von file(pattern) (wie file() mir aussieht, ist die Vereinigung von adds() und modifies()). contains(pattern) gibt keine Elemente zurück.

So ist es möglich, eine Liste von Änderungssätzen, in denen eine bestimmte Datei modifiziert wurde, in irgendeiner Art und Weise zu bekommen?

Antwort

4

Es in Filter Tooolbar in THG Workbench sieht verwendet werden, wie Sie das Laufen sind in Problem „wie hat meine Änderung in diesem Zweig erhalten“. Wenn Sie einen Änderungssatz in einen Zweig zusammenführen, zeichnet Mercurial diesen nicht als Änderung auf. Stattdessen wird darauf hingewiesen, dass das zusammengefügte Änderungsset jetzt Teil des Zielzweigs ist. Das einzige Mal, an dem eine Zusammenführung zeigt, dass eine Datei geändert wurde, ist, ob ein Zusammenführungskonflikt vorliegt, der zu einem neuen Änderungssatz führt.

zu finden, was verschmelzen zu einer changeset in einen Zweig gebracht ist ein zweistufiger Prozess. Zuerst müssen Sie den Changeset finden, an dem die Änderung vorgenommen wurde, an der Sie interessiert sind.

hg log -r "file('<PATTERN>') 

Sobald Sie diese Revision haben, finden Sie die erste Nachkomme changeset im Zielbranchen:

hg log -r "first(branch(<BRANCH>) and descendants(<REVISION>))" 
+0

vielen Dank. Manchmal kann man die Antwort nicht sehen. Trotz vieler Suchanfragen bin ich nie auf dieses Konto gestoßen. Ich schätze Ihre Antwort sowie den Link zum Duplikat. – reidLinden

0

hg log -r "branch(BRANCH) and file('PATTERN')"

Revset können und trat

0
hg log grep name_of_your_file 

funktioniert der Trick für mich in Bezug auf die Suche nach der alle Sätze ändern, die haben führte zu einer Änderung an einer bestimmten Datei. Natürlich, wenn Sie etwas schönes wollen:

thg log name_of_your_file