Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial 我可以将分支标记为';不打算推';?_Mercurial_Branch_Push_Dvcs - Fatal编程技术网

Mercurial 我可以将分支标记为';不打算推';?

Mercurial 我可以将分支标记为';不打算推';?,mercurial,branch,push,dvcs,Mercurial,Branch,Push,Dvcs,我在Mercurial中使用命名分支 在这样做的过程中,我创建了一个名为“游乐场”的分支,在那里我可以尝试各种古怪的实验。我从未打算将此分支合并到任何其他分支中,也从未想将其推送到我们的主存储库中 创建之后,每次推送时,我都会被告知我添加了一个新分支,并且我必须使用--new branch标志。此时,hgpush-bdefault(或我正在推的任何分支)工作正常,但很烦人。有没有办法通过让Hg知道我对推动该分支不感兴趣来抑制该消息?更新: Mercurial 2.1引入了hg phase命令,允

我在Mercurial中使用命名分支

在这样做的过程中,我创建了一个名为“游乐场”的分支,在那里我可以尝试各种古怪的实验。我从未打算将此分支合并到任何其他分支中,也从未想将其推送到我们的主存储库中

创建之后,每次推送时,我都会被告知我添加了一个新分支,并且我必须使用
--new branch
标志。此时,
hgpush-bdefault
(或我正在推的任何分支)工作正常,但很烦人。有没有办法通过让Hg知道我对推动该分支不感兴趣来抑制该消息?

更新: Mercurial 2.1引入了
hg phase
命令,允许用户控制与远程存储库交换的更改集。详细说明此方法

原始答案: 如果您想创建代码的本地分支,您有几个选项。您可以
hg clone
存储库,它将在您的文件系统中本地创建整个存储库的一个分支。另一种选择是,您可以尝试使用Mercurial扩展,如

在Mercurial中有许多方法可以在不使用命名分支的情况下进行分支。只要找到一种适合你需要的方法


进一步阅读:

从Mercurial 2.1(2012年2月发布)开始,您可以将更改集标记为机密,以防止它们被推送到另一个存储库。您可以使用新选项来执行此操作:

$ hg phase --force --secret .
这会将当前工作目录父版本(
)标记为处于
保密
阶段。秘密更改集是存储库的本地更改集:它们不会被推送或拉取。现在按如下所示:

$ hg push
pushing to /home/mg/tmp/repo
searching for changes
no changes to push but 2 secret changesets

Mercurial的旧版本中没有等效的机制。在这里,您最好为不想推送的更改集创建本地克隆。

除了上面关于阶段的极好答案外,您还可以指定“默认路径”(在.hgrc的[path]部分)以引用本地存储库:

[paths]
default = ...
default-push = .
这将导致将所有传出的变更集与指定的存储库进行比较。在这种情况下,将本地存储库中的传出更改集与本地存储库中的更改集进行比较不会产生任何结果

您仍然可以从主存储库中进行拉/更新/合并,但任何推送操作都不会将任何内容发送回主存储库


如果您在多台计算机/存储库上工作,则可以如上所述设置一台计算机/存储库,并将其他计算机/存储库配置为指定指向推送到自身的服务器的“默认”路径。通过这种方式,其他机器可以推/拉到您的本地中央存储库,这些更改集将永远无法逃脱您精心配置的存储库集合。

我个人不喜欢这种解决方案,使用阶段比复制整个回购或编写脚本要好,当您对Mercurial Phases的私有分支具有本机支持时。@dukeoffgaming在询问和回答此问题时,该阶段功能不在Mercurial版本中(Mercurial v2.1于2012年2月1日发布)。我同意,在Mercurial的当前版本中使用phase功能是一个更好的主意。@dukeofgaming忘记了这一点,只是回来了一个更新的版本。Mercurial中只有真正的头,可能是匿名的、书签的,或者在不同的命名分支上。MQ和Phase不提供新的分支类型,它们与现有的分支一起工作或增强现有的分支类型。我决定不使用Phase,而只是将(
push-r.
)书签头推到我自己的克隆repo。我的问题是,很容易不小心推一个头或将其他人的头与Eclipse之类的工具合并。我甚至不再使用默认的
路径
,因为如果我不小心将我的功能分支推到主repo,有人会不小心合并该头部。我也不认为自己是一个
git
人,但我确实觉得
push-r.
(又称轻推)应该是默认值。如果您担心自己的错误,您也可以使用
hg out
来测试在运行
hg push
之前是否正确设置了它。