【问题标题】:How to delete Mercurial branch after merge合并后如何删除 Mercurial 分支
【发布时间】:2012-08-26 03:33:03
【问题描述】:

我正在为我的应用程序中的新功能创建命名的 Mercurial 分支,完成特定功能后,我将该分支合并到 default 分支,并关闭此功能分支。

但我想知道是否有办法完全删除那些命名分支,而不会丢失合并到默认分支中的更改?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    没有。

    当您合并两个分支时,合并提交取决于其两个父提交的存在。这意味着您无法删除构成合并分支的提交,除非您还删除了您不想这样做的合并提交。

    这也不是做事的“善变方式”。当一个分支被合并到另一个分支中,并且没有对该分支进行进一步的开发时,Mercurial 会识别出该分支不再处于活动状态; hg branches 会将那些不活动的分支放在列表的底部。您也可以使用hg commit --close-branch 关闭分支,这将从hg branches 列表中删除分支(除非给出-c 参数)。

    听起来您应该研究 Mercurial 队列 (MQ),因为它支持与您描述的类似的工作流程。例如,您可以设置多个 MQ 队列,每个队列代表一个开发分支。

    【讨论】:

    • 你的答案近乎完美(我已经赞成)但@lvica 应该在 MQ 之前查看书签。 MQ很难。它是一个真正的电动工具,现在它已经失宠了,因为阶段(很快就会过时)就在这里。另一方面,书签非常适合按功能拆分,其中永久命名的分支可能是多余的。
    • @Ry4an 是的,我忘记了它们(因为我从未使用过它们)。您如何处理带有书签的合并后删除?
    • 您只需删除带有hg bookmark --delete bookmark_name 的书签。这里有很多很棒的信息:mercurial.selenic.com/wiki/Bookmarks
    • MQ is almost deprecated 不应该是第一选择。
    【解决方案2】:

    想法:

    就在将合并的功能分支推送到远程服务器之前,我想:“我不想让任何人知道我的分支,我希望它永远不存在”。所以我决定在推送到远程之前将我所有的本地更改放在一个提交中。

    方法:

    1. 将 origin 和 branch 存储库克隆到单独的目录中:

      hg clone ssh://site//hg/repository repository-origin
      hg clone /home/user/work/repository repository-branch
      
    2. 在repository-branch中合并default和feature分支:

      cd repository-branch
      hg merge feature-branch
      hg commit -m "feature-branch: merging into default"
      cd ..
      
    3. 创建 ma​​ster 存储库:

      hg clone repository-origin repository
      
    4. 用repository-branch文件覆盖ma​​ster中的所有文件(不包括隐藏文件):

      rsync -av --exclude=".*" repository-branch/ repository
      
    5. 使用单一提交合并从 feature 分支到 ma​​ster 的所有更改:

      cd repository
      hg commit -m "feature-branch: merging into default"
      
    6. 推送到远程

    在最后一条提交消息中包含来自不需要的分支的所有/部分提交的信息可能会很好。

    优点/缺点:

    • 适用于未推送的分支
    • 将提交压缩在一起并丢失信息
    • 无需扩展

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-05
      • 2012-02-07
      • 2019-10-12
      • 1970-01-01
      • 2010-09-08
      • 2012-06-01
      • 1970-01-01
      • 2011-05-08
      相关资源
      最近更新 更多