0

のデフォルトの動作を変更してhg log、現在の祖先のみを表示することはできますか?

すなわちこれ:

hg log --rev "reverse(ancestors(.))"

事は、私はいつもそれをしたいというhg logことです。

私は自分でこのようなことができることを知っていますが、.bashrcこれを行う水銀の方法があるかどうか疑問に思っていました.

hg () {

    if [[ $2 -eq "log" ]]
    then
        # TODO: Append other arguments to this...
        hg log --rev "reverse(ancestors(.))" 
    else
        # Run the command
    fi
}
4

2 に答える 2

4

エイリアスを使用してこれを実現できますが (以下を参照)、ここでの最もクリーンなアプローチは拡張機能です。

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元の機能に引き続きアクセスできるように、2 番目のエイリアス ( ) が存在しますlog

于 2016-03-02T18:56:52.947 に答える