只有当我有任何标记或书签时,我才能将空格字符作为分隔符吗?
示例:
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
答案 0 :(得分:6)
使用最近的Mercurial(2.5之后),您可以使用if
模板表达式:
hg log --template '{rev} {author}{if(tags, " {tags}")}{if(bookmarks," {bookmarks}")} {desc|firstline}\n'
答案 1 :(得分:3)
可以创建一个新样式,用于定义集合的开头(即书签),集合本身的元素以及集合的最后一个元素的外观。
将以下样式定义保存在文件中,例如叫做“my_style”:
changeset = '{rev} {author}{bookmarks} {desc|firstline}\n'
start_bookmarks = ' ['
bookmark = '{bookmark}, '
last_bookmark = '{bookmark}]'
然后,您可以使用刚刚创建的样式调用hg log:
> 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模板作为参考here。
答案 2 :(得分:2)
我对Mercurial中的模板知之甚少,但您总是可以使用sed
过滤掉额外的空格:
hg log --template "{rev} {author} {tags} {bookmarks} {desc|firstline}\n" | sed "s/ */ /g"