Шаблон Mercurial: разделитель для тегов и закладок - PullRequest
2 голосов
/ 01 декабря 2011

Могу ли я ставить пробелы в качестве разделителей, только если у меня есть тег или закладка?

Пример:

hg log --template "{rev} {author} {tags} {bookmarks} {desc|firstline}\n"

Output:
3: Author1 TIP BKMRK_NAME Another commit
2: Author1   Third commit
1: Author1 TAG1  Second commit
0: Author1   Initial commit

Наборы изменений, которые не имеют тегов или закладок, печатают пробелы. Я хотел бы убрать лишние пробелы:

3: Author1 TAG_NAME BKMRK_NAME Another commit
2: Author1 Third commit
1: Author1 TAG1 Second commit
0: Author1 Initial commit

Ответы [ 3 ]

6 голосов
/ 08 февраля 2013

В последней версии Mercurial (после 2.5) вы можете использовать шаблонное выражение if:

hg log --template '{rev} {author}{if(tags, " {tags}")}{if(bookmarks," {bookmarks}")} {desc|firstline}\n'
3 голосов
/ 28 января 2012

Может быть создан новый стиль, который определяет, как будут выглядеть начало коллекции (т.е. закладки), элемент в самой коллекции и последний элемент коллекции.

Сохраните следующее определение стиля в файле, например. называется "my_style":

changeset = '{rev} {author}{bookmarks} {desc|firstline}\n'

start_bookmarks = ' ['
bookmark = '{bookmark}, '
last_bookmark = '{bookmark}]'

Затем вы можете вызвать журнал hg с помощью только что созданного стиля:

> hg log --style /path/to/my_style
6 james [bar, foo, master] b 3
5 james b 2
4 james a 3

Это вставит пробел и скобки, только если есть закладки (обратите внимание, что между {author} и {bookmarks} нет пробела).

Несколько хороших шаблонов Cli в качестве ссылки можно найти здесь .

2 голосов
/ 01 декабря 2011

Я не знаю много о шаблонах в Mercurial, но вы всегда можете отфильтровать лишние пробелы с помощью sed:

hg log --template "{rev} {author} {tags} {bookmarks} {desc|firstline}\n" | sed "s/  */ /g"
...