代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

对于Mercurial,有两个克隆可以像有两个分支一样工作?

  •  1
  • nonopolarity  · 技术社区  · 15 年前

    因为我想将我7或10天前所做的所有更改进行比较,而不会看到其他团队成员的更改,所以我保留了一个克隆,比如

    c:\dev\proj1
    

    然后我保留了另一个克隆

    c:\dev\proj2
    

    所以我可以为 proj1 ,然后在另一个shell中,从中提取代码,并与其他团队成员合并,然后运行测试。10天后,我仍然可以通过访问 项目1 然后做一个 hg diff hg vdiff .

    我想这也可以通过使用branch来实现。有两个这样的克隆体和有两个分支的效果完全一样吗?一种方法比另一种方法有什么优势吗?

    5 回复  |  直到 15 年前
        1
  •  6
  •   Andres Jaan Tack    15 年前

    简短的回答是:是的。

    Mercurial不关心变更集来自何处,当您合并时。从这个意义上说,分支和克隆在合并更改时同样工作良好。

    更好的是:您描述的工作流是 确切地 战略 Chapter 3 of the Mercurial book .

    分支机构的唯一优势是它们有一个名字,所以你没有立即合并的动力。如果你想保留这些 proj2 变化是分开的,同时仍然从proj1中推拉它们,给它们一个真正的分支。从功能上来说,它们是一样的。

    是的,这是深静脉血栓形成的特征,不是唯一的多变。

        2
  •  1
  •   Noufal Ibrahim    15 年前

    注意 :我更熟悉 git hg 但想法应该是一样的。

    如果您更新这两个克隆(它们都在编辑同一个分支),例如为了快速修复集成沙箱上的错误,差异将变得明显。

    正确的方法是有一个主题分支(您的第一个克隆)用于开发,另一个用于集成(您的第二个克隆)。然后您可以根据需要将更改从一个合并到另一个。如果您确实对集成分支进行了更改,您将知道它是在那里进行的。

        3
  •  1
  •   Mark Tolonen    15 年前

    hg diff -r <startrev> -r <endrev> 可以用来比较Mercurial历史上的任何两点。

    历史记录示例:

           rev      author  description
           ---      ------  ----------------------
    @       6       me      Merge
    |\
    | o     5       others  More other changes.
    | |
    | o     4       others  Other changes.
    | |
    o |     3       me      More of my changes.
    | |
    o |     2       me      My changes.
    |/
    o       1       others  More Common Changes
    |
    o       0       others  Common Changes
    

    如果修订 1个 是原始克隆:

    1. 转速 2个 表示您的更改。
    2. 转速 4个 5个 在您的分支开发期间是否进行了其他更改。它们被合并到你的变更中 6个 .
    3. 此时,仅通过 合并前,运行 hg diff -r 1 -r 3 仅显示这些更改。
        4
  •  0
  •   Thomas Weller    15 年前

    为什么不干脆有两个分支呢?(在像Hg或Git这样的DVCS中,分支/合并比在像TFS或SVN这样的集中式VCS中更容易和更安全!)它将更加安全可靠。
    这将变得显而易见,例如,当您希望将两个分支/克隆合并回一起时。此外,从两个不同的物理位置编辑一个分支很容易导致混淆和错误。Hg的设计正是为了避免这种情况。

    托马斯

        5
  •  0
  •   Community Mohan Dere    9 年前

    正如已经指出的一些答案,分支(命名或匿名)通常比两个克隆更方便,因为您不必拉/推。

    但是,两个克隆具有完全物理分离的明显优势,因此您可以同时处理两件事,并且在切换项目时不需要重新构建。

    早些时候我问 question 关于与hg的并行开发,选项1是两个克隆,选项2是两个分支。

    推荐文章