/ / Mercurial 2.1.1 - Określ, czy zestawem zmian jest połączenie - mercurial, merge, hg-log

Mercurial 2.1.1 - Ustal, czy zestaw zmian jest połączeniem - mercurial, merge, hg-log

W Mercurial 2.4 słowo kluczowe szablonu {p2rev} dodano, że można go użyć do określenia, czy zestaw zmian jest połączeniem.

hg log -r42 --template {p2rev}

Jeśli zwraca „-1”, nie ma drugiego rodzica, stąd zestaw zmian to nie połączenie, w przeciwnym razie jest połączenie.

Ale większość deweloperów wciąż pracuje nad Mercurialem 2.1.1. Za pomocą {p2rev} na swoich komputerach zawsze zwraca [puste].

Próbowałem w 2.1.1:

hg log -r42 --template {parents}

a to daje trochę dziwne wydajność:

  • jeśli jest tylko 1 rodzic (nie scalenie): brak wyjścia
  • jeśli są 2 rodziców (scalanie): the {rev}: {node} z obie rodzice

Jaki jest najlepszy sposób określenia, czy zestaw zmian jest połączeniem Mercurial przed 2.4, mówić 2.1.1 ?

Odpowiedzi:

1 dla odpowiedzi № 1

The hg parents polecenie może zrobić to, co chcesz:

hg parents -r 42 --template "{node|short}n"

W przypadku zmiany scalenia otrzymasz 2 linie wyjścia, a dla zmiany bez scalania otrzymasz 1 linię.


0 dla odpowiedzi nr 2

Używam Mercurial 2.2.2 (Ubuntu 12.10) i wygląda na to, że to działa (używając Zestawy poprawek język zapytań):

$ hg log -r "merge()"
changeset:   6:f75b34694a73
parent:      4:129b7b24f6b4
parent:      5:85771af34f42
[...]
summary:     Merge branch "default" of /foo/proto

changeset:   12:04975792d1f3
parent:      10:42c64107845f
parent:      11:226623b54bd2
[...]
summary:     merged branch "experimental-bar" into "default"

0 dla odpowiedzi № 3

Gdyby

hg log -r"42 & merge()" --template x

zwraca niepusty łańcuch, następnie zmiana zestawu 42 jest połączeniem.
Szablon zwraca literę x, jeśli występuje wynik.