参考mercurial中的当前书签

时间:2013-09-12 17:58:32

标签: version-control mercurial branch dvcs

我在mercurial中使用书签来模拟类似git branch的工作流程。

我发现的一件事是每当我推动时,我总是想要推送当前的书签。而不是打字

hg push -B <bookmark_name>

我一直希望别名hg push来推送当前的书签。要做到这一点,我需要一种引用当前书签而不提及其名称的方法。有没有办法做到这一点?

5 个答案:

答案 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)的别名部分