Есть ли лучший способ извлечь текущий хеш-версию в Mercurial, чем
hg log -l1|grep changeset|cut -d: -f3
?
Часть моего развертывания webapp script "теги" загруженного приложения tarball с его уникальной хэш-версией.
Есть ли лучший способ извлечь текущий хеш-версию в Mercurial, чем
hg log -l1|grep changeset|cut -d: -f3
?
Часть моего развертывания webapp script "теги" загруженного приложения tarball с его уникальной хэш-версией.
Try:
hg id -i
Пример:
$ hg id -i
adc56745e928
hg --debug id -i
Это выведет длинный хеш с плюсом, если есть незафиксированные изменения.
Вы можете использовать --template с родительской командой, я использую это, чтобы получить длинный хэш:
hg parent --template '{node}'
Подводя итог ответам и их ответам, кажется, что это лучший способ печати уникальной (не короткой формы) идентификатора текущей версии:
hg log -l 1 --template '{node}\n' -r .
hg log -l 1 --template '{node|short}\n'
Смотрите документы, параграфы "Основы шаблонов" и следующие.
Самая конкретная команда, отличная от 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, .
(точка) отображает только первый родитель двух родителей рабочей группы.
Как указывали другие, не используйте log -l
.
Используйте hg log -r .
для получения подробной информации, в отличие от использования hg id
, выход которого ограничен, и он не поддерживает шаблоны. Вы также можете создать небольшой псевдоним типа here = log -r .
и использовать hg here
. Если вы хотите, чтобы хэш использовал hg log -r . --template '{node}\n'
.