如何将 bash 脚本直接嵌入到 Mercurial 别名中

How to embed bash script directly inside a Mercurial alias

我有一个 Mercurial 别名,可以将指定的分支推送到中央仓库:

[alias]
pushbranch = push -b

这工作正常,但 90% 的时间我想推送当前分支,我目前是这样做的:

$ hg pushbranch `hg branch`

虽然我可以像这样更新 .hgrc 中的别名:

[alias]
pushbranch = push -b `hg branch`

但这失败了:

pushing to branch`
abort: unknown branch '`hg'!

我发现 this answer 本质上是用 Git 做的,但那里使用的机制也不适用于 Mercurial,我做到了:

[alias]
pushbranch = push -b '!sh hg branch'

并得到:

pushing to ssh://hg@bitbucket.org/myteam/reponame
abort: unknown branch '!hg branch'!

有什么建议吗?

在 Mercurial 中,别名必须以感叹号开头才能调用 shell。在这样的别名中,$HG 可用于调用 Mercurial。例如:

[alias]
pushbranch = !$HG push -b `$HG branch`