【问题标题】:merge-base analog for Mercurial and bzr (to find common ancestors as possible for a merge)?Mercurial 和 bzr 的合并基础类比(为合并找到共同的祖先)?
【发布时间】:2011-10-08 06:07:35
【问题描述】:

Git 有 merge-base 命令,可以显示两个或多个分支的共同祖先。

Mercurial 和 bzr 的类比是什么?

【问题讨论】:

    标签: git mercurial merge bazaar


    【解决方案1】:

    对于 Mercurial:

    hg debugancestor rev1 rev2

    【讨论】:

    • 感谢您的回答。此命令在 hg help 中隐藏,但如果键入 hg debug 则可以查看。不幸的是,这个命令只允许两个变更集,git-merge-base 允许任意数量的变更集。
    • @gavenkoa 我相信 Mercurial 不允许在一次提交中合并两个以上的分支(git octopus 合并)。 Mercurial 开发人员可能没有看到需要有一个命令来查找您不允许执行的合并的共同祖先。
    • 但是这个功能很有用。如果您有 3 个或更多班克斯通过 hg 合并 传播更改,则查找在哪个修订版开始错误修复/功能开发以避免 cherry-picking。看我的问题stackoverflow.com/questions/6709365/…
    【解决方案2】:

    使用revsets:

    "ancestor(single, single)"
          Greatest common ancestor of the two changesets.
    
    $ hg log -r 'ancestor(rev1, rev2)'
    

    【讨论】:

    • ancestors(set) 完美!
    • 谢谢,这正是我所需要的。
    【解决方案3】:

    对于集市:

    bzr find-merge-base /path/to/branch1 /path/to/branch2
    

    (此命令隐藏在您可以使用bzr help commands 获得的主要命令集中。使用bzr help hidden-commands 查看其他隐藏命令)。

    【讨论】:

    • 这似乎应该工作,但对我来说它总是返回当前的 revid(当传递 revids 或 revnos 时)。
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多