Wie können Sie alle Dateien ermitteln, die sich in einem bestimmten Änderungssatz geändert haben?
Ich suche in diesem Fall keinen Unterschied, nur eine Liste von Hinzufügen / Entfernen / Ändern.
hg log -vprX
macht eine Liste von Unterschieden, aber ich möchte nur die Dateien.
Antworten:
Wenn Sie nur Dateien auflisten möchten, die sich geändert haben, sollten Sie den "Statusbefehl" verwenden. Im Folgenden werden die Änderungen an Dateien in Revision REV aufgelistet
quelle
-n
/--no-status
.hg status --no-status --change REV
hg status --rev REV~1:REV
früher.hg status --change .
Entfernen
p
Sie einfach aus Ihremhg log -vpr
Testament die Liste der Dateien.-p
bedeutet show patch. Sie können auch eine Vorlage verwenden, um die Ausgabe nach Ihrem Geschmack zu formatieren.quelle
hg status --change .
Ich weiß, dass die Frage für einen einzelnen Änderungssatz gilt, aber wenn Sie alle Dateien für eine Reihe von Änderungssätzen ändern möchten, können Sie dies tun
quelle
hg log -r BEGIN:END --template "{files}\n"
wie @ geoffrey-zheng und @ton vor zwei Jahren geschrieben haben !!!hg status --rev BEGIN --rev END
ist: 1. viel leichter zu merken alshg log -r BEGIN:END --template "{files}\n"
; 2. Es druckt die Dateien in separaten Zeilen ohne Verwendung vonsed
(@Eric Lawler) oderjoin()
(@Foxichu). 3. Ohne das-m
Flag werden nicht nur geänderte, sondern auch hinzugefügte und entfernte Dateien angezeigt (auch hier gilt die schöne Standardfarbe). 4. Es gibt-a
und-r
Flags, die unterschiedliche Filterung ermöglichen. 5. Wenn man das Statuspräfix nicht möchte, gibt es eine-n
Option, die es unterdrückt.Aktuelle festgeschriebene Revision
.
ist eine Abkürzung für die aktuelle Version, genau wie@HEAD
in GitAktuelle nicht festgeschriebene Revision
Willkürlich begangene Revision
quelle
Fand diese Frage durch Googeln für ein ähnliches Konzept. So zeigen Sie alle Dateien an, die sich durch eine Reihe von Änderungssätzen geändert haben :
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"
zeigt Ihnen eine Liste jeder Datei, die in jedem Änderungssatz geändert oder hinzugefügt wurde, von [Start rev] bis [Ende rev], wobei die Dateien jedes Änderungssatzes in einer neuen Zeile stehen. Wechseln Sie{file_mods}{file_adds}
mit{files}
, um alle geänderten, hinzugefügten oder entfernten Dateien anzuzeigen.sed -e 's/ /\n/g'
teilt alle Dateien auf, um sie in separaten Zeilen und anzuzeigensort
wird die Liste für Sie sortieren, damit wir die Liste mit uniq filtern könnenuniq
filtert die Liste, um Duplikate zu entfernen - Dateien, die in mehr als einer Revision geändert wurden.quelle
--template
Lösung aufjoin()
Basis dieser Mängel könnte unter Verwendung der von @Foxichu vorgeschlagenen Lösung konstruiert werden .Ich weiß, dass diese Frage eine alte Frage ist und ich bin überrascht, dass niemand gerade modifiziertes Codeformular OP angeboten hat. Ich habe eine Liste von geänderten / hinzugefügten / entfernten Dateien (nicht beschriftet, welche ist welche) durch einfaches Ausführen erhalten
hg log -v
. Oder was ich eigentlich brauchtehg log -v -l5
, um Dateien zu sehen, die in den letzten 5 Commits geändert / hinzugefügt / entfernt wurden (einschließlich derjenigen, die ich noch nicht zum Repo gepusht habe).quelle
Wenn Sie wie die meisten Geschäfte sind, verwenden Sie ein Ticketingsystem, um Änderungen zu verfolgen. Wenn Sie die Ticketnummer kennen und alle mit diesem Ticket verknüpften Commits finden möchten (vorausgesetzt, Sie geben die Ticketnummer in die Commit-Nachricht ein), können Sie Folgendes verwenden:
Hier werden alle mit dem Ticket verknüpften Revisionen angezeigt. Die Dateien werden jedoch nicht aufgelistet. Sie können eine der obigen Antworten verwenden, um dann die Liste der mit den Revisionen verknüpften Dateien abzurufen.
Um es jedoch einfacher zu machen, indem Sie die Informationen aus den vorherigen Antworten kombinieren, können Sie wie folgt nach Commits suchen, einschließlich geänderter Dateien:
quelle