Роздрукувати поточний репрезентативний посібник з перегляду?


124

Чи є кращий спосіб витягти поточний хеш редакції в Mercurial, ніж

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

?

Частина мого сценарію розгортання webapp "тегує" завантажений додаток тарболу своїм унікальним хеш-редакцією.


2
Зауважте, що hg log -l 1ви отримуєте найсвіжіший набір змін, не обов’язково той, до якого ви зараз оновлені! Прапор -f обмежує вихід журналу hg предкам поточного робочого каталогу, тому hg log -f -l1ближче до того, що ви хочете.
— водонепроникний

Відповіді:


196

Спробуйте:

hg id -i

Приклад:

$ hg id -i
adc56745e928

22
У випадку, якщо люди пропускають рішення нижче, якщо ви хочете повного використання хеша: hg --debug id -iякщо ви хочете використовувати підтримку шаблонів hg parent --template '{node}' Не використовуйте hg log -l 1, останній набір змін сховища, а не поточний набір змін робочої копії.
— Джозеф Лізе

7
Використання --debug у скриптах не рекомендується, щоб вихід був менш ретельно контрольований без зворотної сумісності. Використовуйте шаблон. Якщо ви хочете зробити це з журналом, використовуйте .крапку як версію.
— Ry4an Brase

Спасибі Ry4an, я не мав уявлення про "-r." посилання на поточну версію робочої копії. Це здається кращим, ніж перехід від "журналу" до "батьківського".
— Джозеф Лізе

Без проблем. hg help revisionsі hg help revsetsмає кілька божевільних потужних ярликів.
— Bra4 Ry4an Brase

Але це не найбільш конкретна відповідь на питання, тому що afaik hg id -iдрукує лише коротку (12 символів) форму глобального хеш-ідентифікатора, а оскільки hg identifyне вистачає --templateафаїків, немає ніякого способу вилучити лише версію та більше нічого, оскільки сторінка man говорить про це друкує резюме.
— Шелбі Мур III

41
hg --debug id -i

Це призведе до отримання тривалого хешу з плюсом, якщо відбудуться незаперечні зміни.


Здається, це за замовчуванням в 3.1.2
— nickd

1
Відхилення через коментар Ry4an .
— Шелбі Мур III

20

Ви можете використовувати --template з батьківською командою, я використовую це, щоб отримати довгий хеш:

hg parent --template '{node}'

Сторінка hg man каже hg parents, що ВИГОТОВЛЕНО , хоча, можливо, це було не так, коли ви писали цю відповідь. Якщо відбувається безперервне злиття, є два батьківські зміни .
— Шелбі Мур III

2
Чи може хтось сказати нам, чому hg батьки застаріли і що ми повинні використовувати замість цього?
— Вінсент

17

Узагальнюючи відповіді та їх відповіді, здається, що це найкращий спосіб надрукувати унікальний (не коротка форма) ідентифікатор поточної версії:

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

Зверніть увагу, якщо відбувається безперервне злиття , .(крапка) відображає лише першого з батьків двох батьків робочої групи.
— Шелбі Мур III

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

Дивіться документи , параграфи "Основи шаблонування" та далі.


2
Я хотів майже цього, але з довгим хешем. Aliasing lidдо log -l 1 --template '{node}\n'досягається саме це - надрукувати повний ідентифікатор версії.
— Майкл Екстранд

6
Це друкує найсвіжіший набір змін. Наш робочий каталог міг бути оновлений до старого набору змін. Для друку набору змін, до якого ми оновлені, використовуйте "hg id". Єдина проблема полягає в тому, що "hg id" не підтримує шаблони і не має можливості друкувати довгий хеш (якщо хтось не знає, як це зробити).
— Ейвер

1
Як сказав Ейвер, це не надрукує фактичну редакцію у вашій робочій копії, тільки останню у вашому сховищі. Оскільки використання цього рішення могло ввести помилки відстеження, я проголосував за це рішення.
— Джозеф Лізе

1
Дітто Джо. Також @Eiver використовуйте, hg --debug id -iяк сказано в інших місцях.
— AJP

3

Найбільш специфічна команда, яка НЕ ​​БЕЗПЕЧЕНО, яка через наявність --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.

Зверніть увагу, якщо відбувається безперервне злиття , .(крапка) відображає лише першого з батьків двох батьків робочої групи.


3

Як зазначали інші, не використовуйте log -l.

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


1

Якщо використовується TortoiseHg, клацніть правою кнопкою миші рядок редагування в Workbench та виберіть "Скопіювати хеш" (відповідно до документації ).

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.