虽然您可以使用别名来完成此操作(见下文),但这里最简洁的方法是扩展:
from mercurial import extensions, commands
testedwith = "3.5"
default_log_rev = "reverse(ancestors(.))"
def override_log(original_cmd, ui, repo, *pats, **opts):
have_rev = False
for opt in ["rev", "branch"]:
if opts.has_key(opt) and opts[opt]:
have_rev = True
if not have_rev:
opts["rev"] = [default_log_rev]
return original_cmd(ui, repo, *pats, **opts)
def uisetup(ui):
extensions.wrapcommand(commands.table, "log", override_log)
--rev
如果既不设置也不设置--branch
选项(或它们的缩写-r
和-b
),这将仅使用您的新默认值log
,因此如果提供其中之一,则保留原始行为。
您可以以通常的方式安装这样的扩展,即在您的~/.hgrc
(假设上面的代码在/path/to/logdefault.py
)中添加类似以下内容:
[extensions]
logdefault = /path/to/logdefault.py
如果扩展对您来说是重量级的,您还可以在您的~/.hgrc
:
[alias]
log = log --rev 'reverse(ancestors(.))'
rawlog = !$HG --config alias.log=log log "$@"
第二个别名 ( rawlog
) 存在,因此您仍然可以访问原始log
功能。