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 № 1The 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.