我可以将分支标记为"不会推送"吗?

Geo*_*uer 33 mercurial branch dvcs push

我在Mercurial中使用命名分支.

在这样做的过程中,我创建了一个名为playground的分支,在那里我可以尝试各种古怪的实验.我从不打算将这个分支合并到任何其他分支中,我从不想将它推送到我们的主存储库.

自创建它以来,每次我做推动时都被告知我添加了一个新分支,我必须使用该--new-branch标志.在这一点上hg push -b default(或者我正在推动的任何分支)工作正常,但它很烦人.有没有办法通过让Hg知道我对推动那个分支不感兴趣来压制这个消息?

Mar*_*ler 55

从Mercurial 2.1(2012年2月发布)开始,您可以将您的变更集标记为机密,以防止它们被推送到另一个存储库.您可以使用new hg phase命令执行此操作:

$ hg phase --force --secret .
Run Code Online (Sandbox Code Playgroud)

这将当前工作目录parent revision(.)标记为处于secret阶段.秘密更改集是您的存储库的本地更改:它们不会被推或拉.推送现在看起来像这样:

$ hg push
pushing to /home/mg/tmp/repo
searching for changes
no changes to push but 2 secret changesets
Run Code Online (Sandbox Code Playgroud)

在旧版本的Mercurial中没有等效的机制.您最好的选择是为您不想推送的变更集创建本地克隆.

  • Mercurial 中只有真正的头像,可能是_匿名_、_书签_或不同的_命名分支_。MQ 和阶段不会为您提供新的分支种类,它们与现有种类一起工作或增强现有种类。 (2认同)

Dev*_*Dev 6

更新:

Mercurial 2.1引入了一个hg phase命令,允许用户控制与远程存储库交换的更改集.@MartinGeisler回答这个问题详细介绍了这个方法.

原答案:

如果要创建代码的本地分支,可以选择几个选项.您可以hg clone在本地创建文件系统中整个存储库的分支的存储库.另一种方法是你可以尝试使用像LocalbranchExtension这样的Mercurial扩展.

在不使用命名分支的情况下,有许多方法可以在Mercurial中进行分支.只需找到适合您需求的方法即可.

进一步阅读:http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/