Есть ли лучший способ извлечь текущий хэш ревизии в Mercurial, чем
hg log -l1|grep changeset|cut -d: -f3
?
Часть моего сценария развертывания веб-приложения «помечает» загруженный архив приложения уникальным хэшем версии.
Есть ли лучший способ извлечь текущий хэш ревизии в Mercurial, чем
hg log -l1|grep changeset|cut -d: -f3
?
Часть моего сценария развертывания веб-приложения «помечает» загруженный архив приложения уникальным хэшем версии.
Пытаться:
hg id -i
Пример:
$ hg id -i
adc56745e928
hg --debug id -i
если вы хотите использовать поддержку шаблонов, hg parent --template '{node}'
не используйте hg log -l 1
, это последний набор изменений репозитория, а не текущий набор изменений рабочей копии.
- person Joseph Lisee; 11.06.2012
.
в качестве ревизии.
- person Ry4an Brase; 12.06.2012
hg help revisions
и hg help revsets
есть такие безумно мощные ярлыки.
- person Ry4an Brase; 14.06.2012
hg id -i
печатает только короткую (12 символов) форму глобального хеш-идентификатора, а поскольку hg identify
не хватает --template
afaics, нет возможности извлечь только ревизию и ничего больше, поскольку < href="https://www.selenic.com/mercurial/hg.1.html#identify" rel="nofollow noreferrer">справочная страница говорит, что печатает сводку.
- person Shelby Moore III; 26.11.2015
hg --debug id -i
Это выведет длинный хэш с плюсом, если есть незафиксированные изменения.
Вы можете использовать --template с родительской командой, я использую это, чтобы получить длинный хэш:
hg parent --template '{node}'
hg parents
является УСТАРЕВШИМ, хотя, возможно, это не так. был случай, когда вы написали этот ответ. При наличии незафиксированного слияния имеются две родительские ревизии.
- person Shelby Moore III; 26.11.2015
Суммируя ответы и их ответы, кажется, что это лучший способ напечатать уникальный (не краткий) идентификатор текущей версии:
hg log -l 1 --template '{node}\n' -r .
.
(точка) отображает первого родителя двух родителей рабочей группы.
- person Shelby Moore III; 26.11.2015
hg log -l 1 --template '{node|short}\n'
См. документацию, параграфы "Основы шаблон» и далее.
lid
на log -l 1 --template '{node}\n'
достигли именно этого - напечатать полный идентификатор ревизии.
- person Michael Ekstrand; 21.04.2011
hg --debug id -i
, как сказано в другом месте.
- person AJP; 05.06.2014
Самая конкретная команда, не являющаяся УСТАРЕВШЕЙ, которая из-за наличия --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
.
Обратите внимание, если есть незафиксированное слияние, только .
(точка) отображает первого родителя двух родителей рабочей группы.
Как указывали другие, не используйте log -l
.
Используйте hg log -r .
для получения подробной информации, в отличие от использования hg id
, вывод которого ограничен и не поддерживает шаблоны. Вы также можете создать небольшой псевдоним, например here = log -r .
, и использовать hg here
. Если вам нужен только хэш, используйте hg log -r . --template '{node}\n'
.
Если используется TortoiseHg, щелкните правой кнопкой мыши строку ревизии в Workbench и выберите «Копировать хэш» (согласно документацию).
hg log -l 1
дает вам самый последний набор изменений, не обязательно тот, который вы обновили в данный момент! Флаг -f ограничивает вывод журнала hg предками текущего рабочего каталога, поэтомуhg log -f -l1
ближе к тому, что вам нужно. - person waterproof   schedule 13.01.2015