如何在Mercurial中将命名分支与不同的变更集关联起来?

时间:2010-10-12 14:51:50

标签: mercurial

我将存储库从Git转换为Mercurial,并为我们的生产开发创建了一个命名分支production。不幸的是,一周后,我们刚刚意识到production分支是错误的变更集。

虽然我们对存储库进行了一些更改,但尚未对production分支进行任何提交。我需要以某种方式将production名称与正确的变更集重新关联,或删除分支并重新创建它。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用mq扩展程序轻松完成此操作。显然,这需要每个人都获得一个新的存储库。

如果在变更集869中创建了production分支,并且您希望在变更集842上创建分支,则可以说:

hg strip 869
hg update 842
hg branch production

这将从存储库中删除changeset 869(及其所有后代),重新编号任何后续更改集以填补空白,然后将production名称分配给正确的变更集。

答案 1 :(得分:0)

如果还没有“提交production分支”,那么该分支尚不存在。在mercurial的命名分支中,分支名称是已提交变更集上的不可擦除标签。变更集永远不会更改它所在的分支。我将假设您至少有一个带有production分支标签的变更集,或者这变成了一个无问题的问题。

如果你采取这些行动,我认为你最终会好起来的:

  1. hg update您想要的修订是生产负责人
  2. hg branch production这只是说下一次提交应该有生产标签
  3. hg commit您现在将拥有一个标签为production
  4. 的新提交

    现在当人们克隆生产时:

    hg clone repopath#production
    

    hg clone -r production repopath
    

    或更新

    hg update production
    

    他们将获得您想要的发展分支。旧的变更集仍然(并且将始终)具有production标签,但这可能没问题。如果它真的不合适你可以重建repo并从那些提交中删除标签,但上面的过程让人们克隆/更新production正确的东西,所以你应该没事。