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

Mercurial仅合并某些变更集

  •  12
  • PostMan  · 技术社区  · 14 年前


    我们通常用乌龟。





    现在,我们有了 default branchA .
    BranchA 添加我的uber更改,我更改了一个公共库,比如说一个扩展方法

    布兰卡 ,我该怎么办?

    但是,我不希望所有的更改都来自 合并为 违约 ,我不想看到其他的变化

    希望这是足够的信息!

    5 回复  |  直到 14 年前
        1
  •  11
  •   Vadim Kotov First Zero    7 年前

    有一种方法可以避免这个问题。你可以 make all your changes on separate feature branches from some baseline revision ,通常是最后一个版本的标签或其他一些稳定点 S

    X 将位于自己的分支上,可以与其他分支合并(合并 M1 M2 )不引入不需要的变更集:

    -----S--o----o---M1----o---> default
         |          /
         |---------X   feature or bugfix
         |          \
         \--o---o----M2----o-----> BranchA 
    

    这只需要正常的 hg merge 操作;不需要补丁, Transplant MQ

        2
  •  23
  •   Lucero    12 年前

    只是为了让事情保持更新:有 graft command

    此命令使用Mercurial的合并逻辑来复制单个更改 不合并历史图中的分支。 这有时被称为“后移”或“樱桃采摘”。由 变更集。

        3
  •  5
  •   Laurens Holst    14 年前

    如果将公共代码分离到它自己的存储库中,则可以使用subrepos将其包含在每个项目中。

    建议每个项目都有一个单独的存储库,特别是有这么多存储库的时候。

        4
  •  3
  •   Vadim Kotov First Zero    7 年前

    想要的不是合并,而是挑选。你可以用 https://www.mercurial-scm.org/wiki/TransplantExtension ,但要注意这里提到的并发症。

        5
  •  -1
  •   rlotun    14 年前

    你描述的是“樱桃采摘”或“部分合并”,这在Mercurial目前是不可能的。您有几个选择:

    • 将公共代码分离到自己的存储库中。
    • 生成对公共代码所做更改的差异,并将其应用于 default 分支机构。