Gibt es eine bessere Möglichkeit, den aktuellen Revisions-Hash in Mercurial zu extrahieren als
hg log -l1|grep changeset|cut -d: -f3
?
Ein Teil meines Webapp-Bereitstellungsskripts "markiert" den hochgeladenen App-Tarball mit seinem einzigartigen Revisions-Hash.
hg log -l 1
Sie den neuesten Änderungssatz erhalten, nicht unbedingt den, auf den Sie derzeit aktualisiert sind! Das Flag -f beschränkt die Ausgabe des hg-Protokolls auf Vorfahren des aktuellen Arbeitsverzeichnisses undhg log -f -l1
ist somit näher an Ihren Wünschen.Antworten:
Versuchen:
Beispiel:
quelle
hg --debug id -i
wünschen : Wenn Sie Vorlagenunterstützung verwenden möchten, verwendenhg parent --template '{node}'
Sie Nicht verwendenhg log -l 1
, es ist das neueste Repository-Änderungsset, nicht das aktuelle Änderungsset für Arbeitskopien..
Punkt als Revision.hg help revisions
undhg help revsets
hat einige verrückte mächtige Abkürzungen wie diese.hg id -i
druckt nur die kurzen (12 Zeichen) Form der globalen Hash - ID und dahg identify
fehlt--template
afaics gibt es keine Möglichkeit nur die Revision und nichts anderes zu extrahieren , da die Manpage sagt es druckt eine Zusammenfassung.Dies gibt den langen Hash mit einem Plus aus, wenn nicht festgeschriebene Änderungen vorliegen.
quelle
Sie können --template mit dem übergeordneten Befehl verwenden. Ich verwende dies, um den langen Hash zu erhalten:
quelle
hg parents
ist DEPRECATED , wenn auch vielleicht , dass möglicherweise nicht der Fall gewesen wäre , wenn Sie diese Antwort geschrieben. Wenn es eine nicht festgeschriebene Zusammenführung gibt, gibt es zwei übergeordnete Revisionen .Wenn man die Antworten und ihre Antworten zusammenfasst, scheint dies der beste Weg zu sein, um die eindeutige (nicht kurze) Kennung der aktuellen Version zu drucken :
quelle
.
(Punkt) zeigt nur die erst Eltern von zwei Eltern der Arbeitsgruppe.Siehe die Dokumente , Absätze "Die Grundlagen des Templating" und die folgenden.
quelle
lid
umlog -l 1 --template '{node}\n'
genau dies zu erreichen - drucken Sie die vollständige Revisions-ID aus.hg --debug id -i
wie an anderer Stelle gesagt.Der spezifischste nicht DEPRECATED-Befehl, der aufgrund des Vorhandenseins von
--template
nur Revisionsinformationen drucken kann, wenn diese Prägnanz erforderlich ist (wie in der Frage impliziert):hg log -l 1 -b . -T '{rev}:{node|short}\n'
Oder für eine einzigartige lange Form von Hash:
hg log -l 1 -r . -T '{node}\n'
Das
-b .
oderbranch(.)
(Punkt für den Filialnamen) bedeutet den aktuellen Arbeitsverzeichniszweig und-r .
die aktuelle Arbeitsverzeichnisrevision, die in und dokumentiert ist .hg help revsets
hg help revisions
Hinweis , wenn es ein nicht gebundener merge , die
.
(Punkt) zeigt nur die erst Eltern von zwei Eltern der Arbeitsgruppe.quelle
Wie andere darauf hingewiesen haben, verwenden Sie nicht
log -l
.Verwenden Sie
hg log -r .
diese Option , um detaillierte Informationen abzurufen, anstatt zu verwenden,hg id
deren Ausgabe begrenzt ist und keine Vorlagen unterstützt. Sie können auch einen kleinen Alias erstellenhere = log -r .
und verwendenhg here
. Wenn Sie nur den Hash verwenden möchtenhg log -r . --template '{node}\n'
.quelle
Wenn TortoiseHg verwendet wird, klicken Sie mit der rechten Maustaste auf die Revisionszeile in der Workbench und wählen Sie "Hash kopieren" (gemäß Dokumentation ).
quelle