Печать текущей версии Mercurial Revision Hash?

Есть ли лучший способ извлечь текущий хеш-версию в Mercurial, чем

hg log -l1|grep changeset|cut -d: -f3

?

Часть моего развертывания webapp script "теги" загруженного приложения tarball с его уникальной хэш-версией.

Ответ 1

Try:

hg id -i

Пример:

$ hg id -i
adc56745e928

Ответ 2

hg --debug id -i

Это выведет длинный хеш с плюсом, если есть незафиксированные изменения.

Ответ 3

Вы можете использовать --template с родительской командой, я использую это, чтобы получить длинный хэш:

hg parent --template '{node}'

Ответ 4

Подводя итог ответам и их ответам, кажется, что это лучший способ печати уникальной (не короткой формы) идентификатора текущей версии:

hg log -l 1 --template '{node}\n' -r .

Ответ 5

hg log -l 1 --template '{node|short}\n'

Смотрите документы, параграфы "Основы шаблонов" и следующие.

Ответ 6

Самая конкретная команда, отличная от DEPRECATED, которая из-за наличия --template может печатать только информацию о ревизии, если требуется такая лаконичность (как это подразумевается в вопросе):

hg log -l 1 -b . -T '{rev}:{node|short}\n'

Или для уникальной длинной формы хэша:

hg log -l 1 -r . -T '{node}\n'

-b . или branch(.) (точка для имени ветки) означает текущую ветку рабочего каталога и -r . означает текущую версию рабочего каталога, которая документально в hg help revsets и hg help revisions.

Обратите внимание, что если существует uncommitted merge, . (точка) отображает только первый родитель двух родителей рабочей группы.

Ответ 7

Как указывали другие, не используйте log -l.

Используйте hg log -r . для получения подробной информации, в отличие от использования hg id, выход которого ограничен, и он не поддерживает шаблоны. Вы также можете создать небольшой псевдоним типа here = log -r . и использовать hg here. Если вы хотите, чтобы хэш использовал hg log -r . --template '{node}\n'.