Mercurial 2.1.1 - Определить, является ли набор изменений слиянием
В ртутном 2.4
ключевое слово шаблона {p2rev}
было добавлено, что может быть использовано для определения, является ли набор изменений слиянием.
hg log -r42 --template {p2rev}
Если это возвращает "-1", второго родителя нет, следовательно, набор изменений не является слиянием, в противном случае это слияние.
Но большинство разработчиков здесь по-прежнему на Mercurial2.1.1
, С помощью{p2rev}
на их машинах всегда возвращается [пусто].
Я пробовал в 2.1.1:
hg log -r42 --template {parents}
и это дает немногостранный вывод:
- если есть только 1 родитель (не объединение): нет вывода
- если есть 2 родителя (объединить): {rev}:{узел}обоих родителей
Как лучше всего определить, является ли набор изменений слиянием в Mercurialpre-2.4, скажем,2.1.1
?
3 ответа
hg parents
Команда может делать то, что вы хотите:
hg parents -r 42 --template "{node|short}\n"
Для набора изменений слияния вы получите 2 строки вывода, а для набора изменений без слияния вы получите 1 строку.
Я использую Mercurial 2.2.2 (Ubuntu 12.10), и кажется, что это работает (используя язык запросов Revision Sets):
$ 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'
Если
hg log -r"42 & merge()" --template x
возвращает непустую строку, тогда changeset 42 - это слияние.
Шаблон возвращает букву х, если есть результат.