2011-07-06 178 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 
相关问题