我将存储库从Git转换为Mercurial,并为我们的生产开发创建了一个命名分支production
。不幸的是,一周后,我们刚刚意识到production
分支是错误的变更集。
虽然我们对存储库进行了一些更改,但尚未对production
分支进行任何提交。我需要以某种方式将production
名称与正确的变更集重新关联,或删除分支并重新创建它。
这样做的最佳方式是什么?
答案 0 :(得分:1)
您可以使用mq
扩展程序轻松完成此操作。显然,这需要每个人都获得一个新的存储库。
如果在变更集869中创建了production
分支,并且您希望在变更集842上创建分支,则可以说:
hg strip 869
hg update 842
hg branch production
这将从存储库中删除changeset 869(及其所有后代),重新编号任何后续更改集以填补空白,然后将production
名称分配给正确的变更集。
答案 1 :(得分:0)
如果还没有“提交production
分支”,那么该分支尚不存在。在mercurial的命名分支中,分支名称是已提交变更集上的不可擦除标签。变更集永远不会更改它所在的分支。我将假设您至少有一个带有production
分支标签的变更集,或者这变成了一个无问题的问题。
如果你采取这些行动,我认为你最终会好起来的:
hg update
您想要的修订是生产负责人hg branch production
这只是说下一次提交应该有生产标签hg commit
您现在将拥有一个标签为production
现在当人们克隆生产时:
hg clone repopath#production
或
hg clone -r production repopath
或更新
hg update production
他们将获得您想要的发展分支。旧的变更集仍然(并且将始终)具有production
标签,但这可能没问题。如果它真的不合适你可以重建repo并从那些提交中删除标签,但上面的过程让人们克隆/更新production
正确的东西,所以你应该没事。