在mercurial中存储单独的命名分支而不必合并它们

Pra*_*yan 7 mercurial branch

这是我第一次使用DVCS和单独的开发人员,这是我第一次真正使用分支机构,所以也许我在这里遗漏了一些东西.

我有一个远程存储库,我从中取出文件并开始工作.更改被推送到远程存储库,当然这个简单的方案工作正常.

现在我的Web应用程序有一些稳定的功能,我想开始部署它,所以我将远程存储库克隆到我的工作目录之外的新分支/稳定目录中,用于默认分支并使用:

hg branch stable
Run Code Online (Sandbox Code Playgroud)

创建一个新的命名分支.我创建了一组仅由stable分支所需的部署脚本,并且我根据需要提交了它们.再次这很好.

现在当我回到我的初始工作目录来处理一些新功能时,我发现Mercurial坚持只有一个头在远程存储库中.换句话说,我必须合并两个分支(默认和稳定),将不需要的部署脚本添加到我的默认分支,以便推送到主存储库.如果我必须对我的稳定分支中的文件进行更改以便部署,这可能会变得更糟.

如何在Mercurial中将我的命名分支分开?我是否必须创建两个单独的远程存储库才能这样做?在这种情况下,命名分支失去其价值.我在这里错过了什么吗?

Ste*_*osh 11

使用hg push -f强制新的远程头的创建.

push默认情况下不会这样做的原因是它会在你忘记的情况下提醒你拉动和合并.什么,你希望发生的事情是:

  • 你和我查看了命名分支"X"的修订版100.
  • 你在本地提交并推送.
  • 我在当地承诺并推动.

现在分支X在远程仓库中看起来像这样:

--(100)--(101)
     \
      \---------(102)
Run Code Online (Sandbox Code Playgroud)

如果他们正在检查分支机构,新开发人员应该抓住哪个头?谁知道.


Pra*_*yan 3

在重新阅读Mercurial 书中有关命名分支开发的部分后,我得出的结论是,就我个人而言,最佳实践是拥有单独的共享存储库,每个分支一个。我使用的是 bitbucket.org 的免费帐户,因此我试图强迫自己只使用一个共享存储库,这导致了问题。

我硬着头皮给自己注册了一个付费帐户,这样我就可以为我的稳定版本保留一个单独的共享存储库。

  • “在大多数情况下,隔离存储库中的分支是正确的方法。它的简单性使其易于理解;因此很难犯错误。您正在使用的分支和系统上的目录之间存在一对一的关系.这使您可以使用普通(非 Mercurial 感知)工具来处理分支/存储库中的文件。” - 来自 Mercurial 书 就我个人而言,对我来说,上面给出的建议会带来更简单的心智模型。我也修改了我的回复。 (3认同)
  • 是什么让你得出这样的结论?我没有看到任何内容说“命名分支不好”。我个人认为它们比多个存储库更容易使用。 (2认同)
  • **@Zed** `hg Push Branchname-to-push` 有什么问题吗?只推送你想要推送的分支。如果您想要一次性树枝,请不要推它,然后在您决定不再需要它时将其剥离。 (2认同)