我在mercurial中使用书签来模拟类似git branch的工作流程。
我发现的一件事是每当我推动时,我总是想要推送当前的书签。而不是打字
hg push -B <bookmark_name>
我一直希望别名hg push
来推送当前的书签。要做到这一点,我需要一种引用当前书签而不提及其名称的方法。有没有办法做到这一点?
答案 0 :(得分:5)
据我所知,这是在两年前被问到的,但我在谷歌找到了这个页面并且没有一个答案有帮助。这就是我的诀窍(Linux):
config/email.php
需要cd才能从非根目录开始工作。
答案 1 :(得分:2)
当前书签名称存储在存储库的.hg/bookmarks.current
文件中。作为别名,您可以使用以下内容:
pushb = push -B `cat .hg/bookmarks.current`
另请注意,当您将存储库状态更新为任何其他修订时,将不会存在文件.hg/bookmarks.current
。
答案 2 :(得分:0)
好的,独立于平台的解决方案,不知何故丑陋
pushb = push -B `hg log --template "{bookmarks}\n" -r "bookmark() & ."`
或者,以更自然的方式使用嵌套命令,它必须是:hg parents --template="{bookmarks}\n"
丑陋,因为纯粹的Mercurial-way在hgrc中使用嵌套的shell-aliases
[alias]
cb = !$HG log --template "{bookmarks}\n" -r "bookmark() & ."
pushb = push -B cb
对我不起作用
>hg pushb
...
bookmark cb does not exist on the local or remote repository!
答案 3 :(得分:0)
这对我有用(并处理带空格的书签):
alias pushb="hg push -B \"\$(hg bookmarks 2> /dev/null | awk '/\*/ { \$1=\"\"; \$NF=\"\"; printf }' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')\""
答案 4 :(得分:-1)
您可以使用shell调用替换:
hg push -B `hg bookmark --active`
这可以放入别名(参见hg help config
)的别名部分