2012-04-17 9 views
6

Ist es möglich zu wissen, wann ein bestimmtes Commit aus einem entfernten Repository abgerufen und die Dateien mit Mercurial aktualisiert wurden?Abrufen und Aktualisieren der Daten in Mercurial

Genauer gesagt habe ich vor ein paar Tagen eine hg pull -u gemacht, und jetzt würde ich gerne wissen, ob dieser Pull nur das letzte Commit heruntergeladen hat, oder ob es einige Commits gab, die noch nicht gezogen wurden und meinen letzten Zug machen sie auch bekommen.

hg log scheint die Daten der Commits zu geben, aber nichts über die Updates. Sind diese Informationen irgendwo?

Antwort

8

Diese Information wird nicht von Mercurial aufgezeichnet. Ein Mercurial-Repository ist nur ein Container für Changesets und Mercurial speichert nicht, wie (oder wann) die Changesets in das Repository eingegeben wurden.

Sie können hierfür Hooks einrichten, obwohl Sie die Skripte selbst erstellen müssten. Ein sehr rudimentäres System würde

sein
[hooks] 
pre-pull = (date; hg root; hg tip) >> ~/.pull-log 
post-pull = hg tip >> ~/.pull-log 

Dies das aktuelle Datum aufnehmen würde, die aktuelle Repository und die aktuelle Spitze in ~/.pull-log kurz vor jedem hg pull. Nach dem Ziehen wird die neue Spitze aufgezeichnet. Sie könnten Skripts erstellen, die die Protokolldatei analysieren, um Informationen darüber zu erhalten, was jede Pull-Operation getan hat.

hg log scheint die Termine der Commits zu geben, aber nichts über die Updates

Ja, hg log beschäftigt sich nur mit der gespeicherten Geschichte (Changesets) und Arbeitskopiervorgänge wie die Aktualisierung nicht Teil ist aufgezeichnete Geschichte.

Zum Schluss möchte ich erwähnen, dass dies das erste Mal ist, dass jemand jemanden nach einem "Pull Log" fragt. Das Gegenteil ist jedoch durchaus üblich: Es gibt Skripte für die Pflege eines "Push-Protokolls" auf einem Server, um zu sehen, wer was wann gedrängt hat. Dies geschieht unter anderem durch Mozilla. Für einige Startanleitungen siehe .

+0

Vielen Dank für Ihre Antwort, und vor allem für mich eine Idee Lösung für eventuelle zukünftige Bedürfnisse zu geben . Sehr schön. – nIcO

+0

@nIcO: Gern geschehen! Ich habe etwas über Pushlogs hinzugefügt - das ist das gegenteilige Konzept. Das wird hoffentlich für andere in Zukunft nützlich sein. –

1

Wenn Sie sich anmelden möchten, wann und mit Update, die Version hg verwendet wurde, um den Code zu aktualisieren, dann diese Haken verwenden:

[hooks] 
pre-update = (echo "---------------------------------"; date --rfc-3339=s; hg root; echo "pre-update:"; hg identify --id --branch) >> .hgupdates 
post-update = (echo "post-update:"; hg identify --id --branch) >> .hgupdates 

die oben Haken wie folgt ein Protokolleintrag für jedes Mal, hg update erzeugen ist laufen:

2015-12-23 00:44:31+02:00 
/var/www/my/project 
pre-update: 
802120d1d3a0 somebranch 
post-update: 
302720d1d3d2 otherbranch 

Dies funktioniert auch, wenn hg Update ohne eine bestimmte Revision Flag ausgeführt wird (-r) gesetzt

Verwandte Themen