2012-06-01 71 views
3

我希望将我的默认hg状态记录到subrepos中。这是很容易在.hgrc做到:如何关闭hg状态-S

[alias] 
status = status -S 

但我希望有另一个别名,说汞状态,无subrepo,一点不。

[alias] 
status-no-subrepo = status 

不幸的是,这是行不通的,因为状态 - 无subrepo --expands到 - >状态--expands到 - >状态-S。我想在这一点上有什么可以阻止递归的。

任何想法?


顺便说一句,这似乎是违反GLEW的规则之一:即可以开启应该可以关闭任何命令行选项。可能-S = -S:1,-S:0关闭。

+1

不错的规则:) ...也是个好问题。 – 0xC0000022L

回答

1

您需要在运行status-no-subrepo时禁用status别名。

[alias] 
status = status -S 
status-no-subrepo = !$HG --config alias.status=status status [email protected] 

我不使用subrepos,但我测试了与glog别名类似的功能。

glog = !$HG log --graph --branch $($HG branch) [email protected] 
glog-all-branches = !$HG --config alias.glog=glog glog [email protected] 

!告诉水银这是一个外壳命令,而不是水银子命令。在运行shell命令时,Mercurial将$ HG设置为正在运行的hg可执行文件的路径。默认情况下,别名之后的参数不会传递到shell命令中,因此[email protected]将它们添加回来。这允许您运行诸如hg status-no-subrepo --no-status之类的命令来显示没有subrepos的更改并隐藏状态前缀。

2

简单,有原始的别名,根据不同的名称

[alias] 
sstat = status -S 

不是你要找的人,我知道答案,但它很容易。这也意味着,如果你移动到没有安装别名的系统(你会得到一个适当的错误提醒你),你不会感到困惑,而其他人在你的账户中做事时不会感到困惑。

我不能告诉你多少次,我帮助别人出去只是为了得到恼火,他们已经化名lsls -lrmrm -i

在一般情况下,我认为覆盖与个性化版本的共同命令为错误的构思。