2011-12-01 54 views
2

只有當我有任何標記或書籤時,纔可以將空格字符作爲分隔符嗎?Mercurial模板:標記和書籤的分隔符

實施例:

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 

回答

2

新風格可以被創建,它定義了集合的開始(即書籤),集合本身中的元素和集合的最後一個元素的樣子。

將以下樣式定義保存在文件中,例如所謂「my_style」:

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

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

然後,您可以撥打汞柱記錄與剛剛新創建的風格:

> 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

+0

是的,就是這樣。我想我以前曾嘗試過類似的方式,但我只包含了「start_bookmarks = ...」這一行。僅這一行不起作用。 「書籤= ...」行是必需的。謝謝。 –

2

我不知道很多關於水銀模板,但你總是可以過濾掉多餘的空格與sed

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

不幸的是,這不是我一個解決方案,因爲我做了一個風格了這樣的模板。我需要在Mercurial中這樣做,因爲它是諸如「hg log -l 10」,「hg heads」等命令的默認樣式。同時刪除所有雙重空格會混淆glog的圖形。 –

6

隨着近來水銀(2.5)之後,你可以使用if模板表達式:

hg log --template '{rev} {author}{if(tags, " {tags}")}{if(bookmarks," {bookmarks}")} {desc|firstline}\n'