2011-07-06 141 views
8

當我從終端窗口運行Mercurial的「hg log」命令時,結果通常會從屏幕上消失,迫使我滾動到頂部。其結果是,我創建了一個模板,以減少日誌的冗長外和格式:如何限制Mercurial日誌的大小?

[alias] 
slog = log --template '{rev}:{node|short} {desc|firstline} ({author})\n' 

不過,我想通過進一步改進這個無論是)限制了「苦幹」的大小隻最後10次提交或b)使用諸如「hg slog ##」之類的命令,其中「##」將是結果中顯示的日誌的數量。

有關如何實現A或B的任何想法?

回答

12

您可以定義您的別名只做一個固定的限制以這種方式類似:

slog = log --limit 10 --template "{rev}:{node|short} {desc|firstline} ({author})\n" 

或者,你可以把--limit在年底使你可以通過一些給它,作爲參數的別名將追加到結尾:

slog = log --template "{rev}:{node|short} {desc|firstline} ({author})\n" --limit 

以上可以被稱爲像這在過去的10名的變更:

hg slog 10 

你也應該能夠確定這樣的參數化版本,但它似乎並沒有成爲財產擴大$1

slog = log --limit $1 --template "{rev}:{node|short} {desc|firstline} ({author})\n" 

#I had to use shell execute to make it expand: 
#slog = !hg log --limit $1 --template "{rev}:{node|short} {desc|firstline} ({author})\n" 
+0

任何關於如何使「--limit」可選的想法?如果我輸入「hg slog」,則不需要輸入值。如果我可以選擇這樣做會很好。 – Huuuze

+0

取決於你的shell,但基本上你必須測試''$ 1「'是否等於''」''。在Windows中,如果使用我的有限批處理文件知識,使它在一行上工作,就會'slog =!if'$ 1'=='「(hg log --limit 10)else(hg log --limit $ 1) (爲簡潔起見省略模板) –

7

爲了得到最後10變更:
hg log -l10

替代解決方案:
配置autopager plugin.hgrc文件。
最終的結果是已經提到的解決方案

hg log | less 
+0

即'-l'(小寫字母L)爲限制。 –

0

如果您「再使用* nix的環境,這可以讓你通過日誌記錄在您的休閒背部滾動:

hg log | less 

或者根據您的喜好:

hg log | more 
相關問題