代码之家  ›  专栏  ›  技术社区  ›  Praveen Angyan

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

  •  7
  • Praveen Angyan  · 技术社区  · 16 年前

    这是我第一次使用DVC,也是作为一个单独的开发人员,这是我第一次实际使用分支,所以可能我在这里遗漏了一些东西。

    我有一个远程存储库,从中提取文件并开始工作。更改被推送到远程存储库中,当然,这个简单的场景可以正常工作。

    既然我的Web应用程序具有一些稳定的特性,我想开始部署它,因此我将远程存储库克隆到默认分支的工作目录之外的新分支/稳定目录,并使用:

    hg branch stable
    

    创建新的命名分支。我创建了一系列只有稳定分支需要的部署脚本,并根据需要提交它们。这又起作用了。

    现在,当我回到我的初始工作目录,开始研究一些新特性时,我发现mercurial坚持只在远程存储库中有一个头部。换句话说,我必须合并这两个分支(默认和稳定),将不需要的部署脚本添加到我的默认分支,以便推送到主存储库。如果为了部署而不得不更改稳定分支中的文件,情况可能会更糟。

    我如何用mercurial将我的命名分支分开?我必须创建两个独立的远程存储库才能这样做吗?在这种情况下,命名的分支将失去其值。我是不是错过了什么?

    4 回复  |  直到 16 年前
        1
  •  11
  •   Steve Losh    16 年前

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

    原因 push 默认情况下不会这样做的是,它试图提醒您在忘记的情况下进行拉合并。你什么 不要 想要发生的是:

    • 您和我查看了命名分支“X”的第100版。
    • 您在本地提交并推送。
    • 我在本地承诺并推动。

    现在,分支X在远程回购中看起来像这样:

    --(100)--(101)
         \
          \---------(102)
    

    如果新开发人员要检查分支,他们应该抓住哪个头?谁知道呢。

        2
  •  3
  •   Praveen Angyan    16 年前

    重新阅读后 section on named branchy development 在这本反复无常的书中,我得出的结论是,对于我个人来说,最好的做法是拥有单独的共享存储库,每个分支对应一个。我当时在bitback.org的免费账户上,所以我试图强迫自己只使用一个共享存储库,这就产生了问题。

    我咬紧牙关,给自己开了一个付费账户,这样我就可以为我的稳定版本保留一个单独的共享存储库。

        3
  •  2
  •   Jim Correia    16 年前

    你写道:

    我发现mercurial坚持只有一个头在远程存储库中。

    你为什么这么认为?

    从帮助 hg push :

    默认情况下,如果push检测到结果 增加远程磁头的数量。这通常表明 客户机在推之前忘记了拉合并。

    如果您知道您有意在远程存储库中创建一个新的头,并且这是可取的,请使用-f标志。

        4
  •  1
  •   Stephen Emslie    16 年前

    我来自吉特,也期待着同样的事情。仅仅是推顶看起来可能是一种方法。

    H-Pr-R尖端