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 - это слияние.
Шаблон возвращает букву х, если есть результат.

Другие вопросы по тегам