Как показать текущую рабочую ревизию в "hg log" Mercurial? - PullRequest
4 голосов
/ 21 июля 2011

Я хочу, чтобы моя "hg h" (вывод псевдонима журнала hg) показывала, какая моя текущая ревизия находится в контексте истории / журнала.

На моем .hgrc у меня есть следующее:

[alias]
h = log --template "{rev} {node|short} {date|shortdate} | [{author|user}] {desc|strip|firstline} :: {tags}\n"

Вот пример вывода:

$ hg h
1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip
0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit ::

Но если я обновлю до ревизии 0, вывод останется прежним:

$ hg up 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

$ hg h
1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip
0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit ::

Пример желаемого вывода будет:

$ hg h
1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip
0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit :: [working]

примечание: это [рабочий] НЕ тег, это просто моя рабочая ревизия, которую я обновил.

Другим примером может быть:

$ hg h
1 f130b4194c90 2011-07-21 | | [slashfoo] added a comment :: tip
0 f4b4ec3c8c95 2011-07-21 |X| [slashfoo] initial commit ::

Я настроил вывод "hg h" с помощью записи hgbook "Настройка вывода Mercurial" http://hgbook.red -bean.com / read / custom-the-output-of-mercurial.html

Альтернативой тому, что я хочу сделать, может быть:

  1. с использованием расширения graphlog и hg h -G, чтобы @ означало текущую рабочую ревизию
  2. используя hg id, чтобы узнать, какая у меня ревизия
  3. , используя hg parents, чтобы узнать, какая у меня ревизия, с некоторой дополнительной информацией

Но только альтернатива # 1 показывает мне контекст, но hg log -G и псевдонимы немного менее "компактны", чем мой желаемый вывод.

Вот пример вывода альтернативы # 1

$ hg h -G
o  1 f130b4194c90 2011-07-21 | [slashfoo] added a comment :: tip
|
@  0 f4b4ec3c8c95 2011-07-21 | [slashfoo] initial commit ::

Этот вопрос аналогичен Как мне найти мою рабочую ревизию в Mercurial , но я хочу, чтобы она была в контексте и в компактной форме (т.е. без -G)

Ответы [ 3 ]

2 голосов
/ 31 мая 2017

hg log --rev $(hg id -i | sed 's/.$//')

1 голос
/ 22 июля 2011

В среде, похожей на bash, следующий маленький монстр с псевдонимом bash делает свое дело:

alias hgh='hg log -G --template "{rev} {node|short} {date|shortdate} | [{author|user}] {desc|strip|firstline} :: {tags}\n" | grep -v "^[|/\\ ]*$" | sed -e "s,^[o|/\\ +-]*,," -e "s,^@ *\(.*\),\1 [working]," | less'

Он использует опцию -G и grep и sed, чтобы убрать все графические элементы, кроме маркера @, который заменяется маркером [working] в конце строки.

Правда, это рабочее, но уродливое решение. Использование команд и параметров Mercurial было бы намного лучше, но похоже, что система шаблонов не обеспечивает то, что вы хотите.

В качестве примечания вы можете посмотреть на расширение компаса Я написал - не то, что вы ищете конкретно, но это также помогает увидеть ваш текущий контекст в репозитории.

0 голосов
/ 10 августа 2011

Используйте набор ревизий , чтобы выбрать нужные наборы изменений.Если вы добавите

-r "limit(.::, 4) + last(::., 4)"

в конец своего псевдонима, вы увидите родительскую версию рабочей копии плюс три набора изменений до и после контекста.

К сожалению, никаких признаковгде родительская ревизия рабочей копии находится в выводе - она ​​будет наверху, когда вы на кончике, и будет в середине, когда вы находитесь где-то еще в истории.

...