Zauważ, że hg log -l 1daje ci najnowszy zestaw zmian, niekoniecznie ten, do którego jesteś aktualnie aktualizowany! Flaga -f ogranicza wyjście dziennika hg do przodków bieżącego katalogu roboczego, więc hg log -f -l1jest bliżej tego, czego chcesz.
W przypadku, gdy ludzie przegapią poniższe rozwiązania, jeśli chcesz użyć pełnego skrótu: hg --debug id -ijeśli chcesz obsługiwać szablon, użyj hg parent --template '{node}' Nie używaj hg log -l 1, jest to najnowszy zestaw zmian repozytorium, a nie bieżący zestaw zmian kopii roboczej.
Joseph Lisee
7
Używanie --debug w skryptach nie jest zalecane, ponieważ dane wyjściowe są mniej dokładnie kontrolowane w / r / t wstecznej kompatybilności. Użyj szablonu. Jeśli chcesz to zrobić w / log, użyj .kropki jako wersji.
Ry4an Brase
Dzięki Ry4an nie miałem pojęcia o „-r”. odwołując się do aktualnej wersji kopii roboczej. Wydaje się, że jest to lepsze posunięcie niż przejście z „dziennika” na „rodzic”.
Joseph Lisee
Nie ma problemu. hg help revisionsi hg help revsetsma takie szalone, potężne skróty.
Ry4an Brase
Ale nie jest to najbardziej szczegółowa odpowiedź na to pytanie, ponieważ afaik hg id -idrukuje tylko krótką (12 znaków) postać globalnego hash id, a ponieważ hg identifynie ma --templateafaics, nie ma sposobu, aby wyodrębnić tylko wersję i nic więcej, ponieważ strona podręcznika to mówi drukuje podsumowanie.
Shelby Moore III
41
hg --debug id -i
Spowoduje to wyświetlenie długiego skrótu, z plusem, jeśli są niezatwierdzone zmiany.
Strona podręcznika hg mówi, że hg parentsjest WYCOFANE , chociaż być może tak nie było, kiedy pisałeś tę odpowiedź. W przypadku niezatwierdzonego scalenia istnieją dwie wersje nadrzędne .
Shelby Moore III
2
Czy ktoś może nam powiedzieć, dlaczego rodzice hg są przestarzali i czego powinniśmy zamiast tego używać?
Vincent
17
Podsumowując odpowiedzi i ich odpowiedzi, wydaje się, że jest to najlepszy sposób na wydrukowanie unikalnego (nie krótkiego) identyfikatora aktualnej wersji:
Chciałem prawie tego, ale z długim haszyszem. Aliasing, lidaby log -l 1 --template '{node}\n'osiągnąć dokładnie to - wydrukuj pełny identyfikator wersji.
Michael Ekstrand
6
Spowoduje to wydrukowanie ostatniego pobranego zestawu zmian. Nasz katalog roboczy mógłby zostać zaktualizowany do starszego zestawu zmian. Aby wydrukować zestaw zmian, do którego jesteśmy zaktualizowani, użyj "hg id". Jedynym problemem jest to, że "hg id" nie obsługuje szablonów ani nie ma opcji drukowania długiego hasha (chyba, że ktoś wie, jak to zrobić).
Eiver
1
Jak powiedział Eiver, to nie drukuje rzeczywistej wersji w twojej kopii roboczej, tylko ostatnią z twojego repozytorium. Ponieważ użycie tego rozwiązania może spowodować błędy śledzenia, przegłosowałem to rozwiązanie.
Joseph Lisee
1
Głosowanie w dół, podobnie jak Joe. Również @Eiver używaj, hg --debug id -ijak powiedziano w innym miejscu.
AJP,
3
Najbardziej specyficzne polecenie, które nie zostało WYCOFANE, które ze względu na obecność --templatemoże wydrukować tylko informacje o rewizji, jeśli taka zwięzłość jest wymagana (jak wynika z pytania):
Służy hg log -r .do uzyskiwania szczegółowych informacji, w przeciwieństwie do używania, hg idktórego wyjście jest ograniczone i nie obsługuje szablonów. Możesz także utworzyć mały alias here = log -r .i użyć hg here. Jeśli chcesz tylko hash, użyj hg log -r . --template '{node}\n'.
hg log -l 1
daje ci najnowszy zestaw zmian, niekoniecznie ten, do którego jesteś aktualnie aktualizowany! Flaga -f ogranicza wyjście dziennika hg do przodków bieżącego katalogu roboczego, więchg log -f -l1
jest bliżej tego, czego chcesz.Odpowiedzi:
Próbować:
Przykład:
źródło
hg --debug id -i
jeśli chcesz obsługiwać szablon, użyjhg parent --template '{node}'
Nie używajhg log -l 1
, jest to najnowszy zestaw zmian repozytorium, a nie bieżący zestaw zmian kopii roboczej..
kropki jako wersji.hg help revisions
ihg help revsets
ma takie szalone, potężne skróty.hg id -i
drukuje tylko krótką (12 znaków) postać globalnego hash id, a ponieważhg identify
nie ma--template
afaics, nie ma sposobu, aby wyodrębnić tylko wersję i nic więcej, ponieważ strona podręcznika to mówi drukuje podsumowanie.Spowoduje to wyświetlenie długiego skrótu, z plusem, jeśli są niezatwierdzone zmiany.
źródło
Możesz użyć --template z poleceniem nadrzędnym, używam tego, aby uzyskać długi hash:
źródło
hg parents
jest WYCOFANE , chociaż być może tak nie było, kiedy pisałeś tę odpowiedź. W przypadku niezatwierdzonego scalenia istnieją dwie wersje nadrzędne .Podsumowując odpowiedzi i ich odpowiedzi, wydaje się, że jest to najlepszy sposób na wydrukowanie unikalnego (nie krótkiego) identyfikatora aktualnej wersji:
źródło
.
(kropka) wyświetla tylko pierwszego rodzica dwojga rodziców grupy roboczej.Zobacz dokumentację , akapity „Podstawy tworzenia szablonów” i następne.
źródło
lid
abylog -l 1 --template '{node}\n'
osiągnąć dokładnie to - wydrukuj pełny identyfikator wersji.hg --debug id -i
jak powiedziano w innym miejscu.Najbardziej specyficzne polecenie, które nie zostało WYCOFANE, które ze względu na obecność
--template
może wydrukować tylko informacje o rewizji, jeśli taka zwięzłość jest wymagana (jak wynika z pytania):hg log -l 1 -b . -T '{rev}:{node|short}\n'
Lub unikalna długa forma haszyszu:
hg log -l 1 -r . -T '{node}\n'
Symbol
-b .
lubbranch(.)
(kropka przy nazwie gałęzi) oznacza bieżącą gałąź katalogu roboczego i-r .
oznacza bieżącą wersję katalogu roboczego, która jest udokumentowana whg help revsets
ihg help revisions
.Zwróć uwagę, że jeśli występuje niezatwierdzone scalanie ,
.
(kropka) wyświetla tylko pierwszego rodzica dwojga rodziców grupy roboczej.źródło
Jak zauważyli inni, nie używaj
log -l
.Służy
hg log -r .
do uzyskiwania szczegółowych informacji, w przeciwieństwie do używania,hg id
którego wyjście jest ograniczone i nie obsługuje szablonów. Możesz także utworzyć mały aliashere = log -r .
i użyćhg here
. Jeśli chcesz tylko hash, użyjhg log -r . --template '{node}\n'
.źródło
W przypadku użycia TortoiseHg kliknij prawym przyciskiem myszy wiersz wersji w Środowisku roboczym i wybierz „Kopiuj hash” (zgodnie z dokumentacją ).
źródło