2016-07-31 44 views
2

Mercurial verfolgt den Inhalt eine Datei im ganzen Umbenennungen (hg mv $OLD $NEW), so dass hg annotate $NEW auch die zeilenweise Veränderungen zeigt sich früher gemacht $OLD mit ihrer ursprünglichen Identifikation. Das funktioniert gut.Mercurial: Identifizieren Sie nach Dateinamen umbenennen

ABER es scheint keinen einfachen Weg zu finden, um den Namen der $OLD Datei zu finden, zu der eine bestimmte Zeile innerhalb der Abstammung von $NEW gehört. hg annot $NEW -r$REV funktioniert nur bis zum rename Changeset.

Natürlich ist die Information irgendwie zugänglich, e. G. indem Sie durch hg log (ohne --follow) krabbeln und die Umbenennungen mit einigen hg log -r$RENAMEREV -g -p (oder durch Klicken auf hg serve 's Webinterface) identifizieren. Aber dieser "Arbeitsablauf" ist nicht nur ärgerlich und fehleranfällig, sondern [am wichtigsten] ist er nicht nicht-interaktiv/skriptfähig.

Meine Frage: Gibt es eine Möglichkeit zu bekommen/entweder

  • einige Liste der Dateinamen Geschichte der $NEW (am besten mit dem jeweiligen Revisionsbereichen) oder
  • den Namen der Datei, in der Konstruktion Zeile $LINE wurde commited (irgendeine Art von Dateinamen Option für hg annot)?

Ideen in der hg CLI oder Python/hglib geschätzt.

Antwort

0

Entweder sind das {file_copies} Keyword in Ihrer hg log Vorlage:

$ hg init demo 
$ cd demo 
$ touch a 
$ hg ci -Am 'file a' 
adding a 
$ hg mv a b 
$ hg ci -Am 'moved to file b' 
$ hg log -r . -T"{file_copies}\n" 
b (a) 

Die integrierte Vorlage status wird Datei kopieren info schließen, wenn Sie die --copies Flag gesetzt:

$ hg log -r 1 -Tstatus --copies 
changeset: 1:b37952faaddc 
tag:   tip 
user:  Martijn Pieters <[email protected]> 
date:  Sun Jul 31 16:07:04 2016 +0100 
summary:  moved to file b 
files: 
A b 
    a 
R a 

So Datei b war genommen von a.

Weitere Informationen, die Sie in die Protokollausgabe aufnehmen können, finden Sie unter hg help template.