3

デフォルトの hg ステータスをサブレポに戻したい。これは .hgrc で簡単に実行できます。

[alias]
status = status -S

しかし、hg status-no-subrepo などの別のエイリアスが必要ですが、そうではありません。

[alias]
status-no-subrepo = status

残念ながら、status-no-subrepo --expands-to--> status --expands-to--> status -S であるため、これは機能しません。その時点で再帰を止める何かがあると思います。

何か案は?


ところで、これは Glew の規則の 1 つに違反しているようです。つまり、オンにできるコマンド ライン オプションはすべてオフにできるはずです。おそらく -S == -S:1, -S:0 でオフになります。

4

2 に答える 2

2

簡単です。元のエイリアスを別の名前にします

[alias]
sstat = status -S

あなたが探していた答えではありませんが、簡単です。これはまた、エイリアスがインストールされていないシステムに移動しても混乱しないことを意味し (適切なエラーが表示されて通知されます)、他の人があなたのアカウントで何かを行うときに混乱することもありません。

誰かがやに偽名lsを付けていることに腹を立てるためだけに誰かを助けたことが何回あるかわかりません。ls -lrmrm -i

一般的に、一般的なコマンドをパーソナライズされたバージョンで上書きすることは、考えが悪いと思います。

于 2012-06-02T10:12:50.837 に答える
1

status実行中はエイリアスを無効にする必要がありますstatus-no-subrepo

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

サブリポジトリは使用しませんが、glog エイリアスで同様の機能をテストしました。

glog = !$HG log --graph --branch $($HG branch) $@
glog-all-branches = !$HG --config alias.glog=glog glog $@

!Mercurial に、これが Mercurial のサブコマンドではなく、シェル コマンドであることを伝えます。シェル コマンドを実行すると、Mercurial は $HG を実行中のhg実行可能ファイルへのパスに設定します。エイリアスの後の引数は、デフォルトではシェル コマンドに渡されないため、$@追加し直します。hg status-no-subrepo --no-statusこれにより、サブリポジトリなしで変更を表示したり、ステータス プレフィックスを非表示にしたりするコマンドを実行できます。

于 2012-06-03T19:33:39.383 に答える