2012-04-17 11 views
6

Czy można dowiedzieć się, kiedy pewne zatwierdzenie zostało wyciągnięte z odległego repozytorium, a pliki zaktualizowane za pomocą Mercurial?Uzyskaj daty pobrania i aktualizacji w Mercurial

Dokładniej, zrobiłem hg pull -u kilka dni temu, a teraz chciałbym się dowiedzieć, czy ten ściągacz pobierał tylko ostatnie zatwierdzenie, czy też były jakieś zatwierdzenia, które nie zostały jeszcze wyciągnięte, robiąc ostatni ciąg też je zdobyć.

hg log wydaje się podawać daty zatwierdzeń, ale nic o aktualizacjach. Czy ta informacja jest gdziekolwiek?

Odpowiedz

8

Informacje te nie są rejestrowane przez Mercurial. Repozytorium Mercurial jest tylko kontenerem dla zestawów zmian, a Mercurial nie przechowuje sposobu (lub kiedy) zestawów zmian wprowadzonych do repozytorium.

Możesz ustawić haki do tego, chociaż sam musisz skompilować skrypty. System bardzo prymitywny byłoby

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

Byłoby to nagrać bieżącą datę, aktualną repozytorium oraz aktualny końcówkę w ~/.pull-log tuż przed każdym hg pull. Po pociągnięciu nagrywana jest nowa końcówka. Można budować skrypty analizujące plik dziennika, aby uzyskać informacje o tym, co zrobiło każde przeciągnięcie.

hg log wydaje się dawać daty tych zatwierdzeń, ale nic o aktualizacjach

Tak, hg log dotyczy jedynie zapamiętanej historii (Zestawienia zmian) oraz operacji kopii roboczej jak aktualizowanie nie jest częścią odnotowana Historia.

Na koniec chciałbym wspomnieć, że po raz pierwszy widziałem, jak ktoś prosi o "dziennik wyjazdu". Jednak przeciwieństwo jest dość powszechne: istnieją skrypty do utrzymywania "dziennika wypychania" na serwerze, aby zobaczyć, kto pchnął co i kiedy. Odbywa się to między innymi przez Mozilla. Zobacz this README, aby uzyskać instrukcje początkowe.

+0

Dzięki za odpowiedź, a przede wszystkim za udzielenie mi pomysł rozwiązania dla ewentualnych przyszłych potrzeb . Bardzo dobrze. – nIcO

+0

@nIcO: Nie ma za co! Dodałem trochę o pushlogach - to rodzaj przeciwnej koncepcji. Miejmy nadzieję, że będzie to przydatne dla innych osób w przyszłości. –

1

Jeśli chcesz się zalogować kiedy iz której wersji Hg aktualizacji użyto zaktualizować kod, a następnie wykorzystać te haki:

[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 

powyższe haki produkować wpis dziennika tak dla każdej aktualizacji czasu HG run:

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

działa to także wtedy, gdy zmiana hg jest prowadzony bez określonej flagi rewizyjnej (-R) ustawiony

Powiązane problemy