如何将命名分支与Mercurial中的不同变更集相关联?
我将一个存储库从Git转换为Mercurial,并为我们的产品开发创建了一个命名分支如何将命名分支与Mercurial中的不同变更集相关联?,mercurial,Mercurial,我将一个存储库从Git转换为Mercurial,并为我们的产品开发创建了一个命名分支production。不幸的是,一周后,我们才意识到生产分支位于错误的变更集中 尽管我们已经对存储库做了很多更改,但是还没有提交到生产分支。我需要以某种方式将生产名称与正确的变更集重新关联,或者删除分支并重新创建它 这样做的最佳方式是什么?如果没有“提交到生产部门”部门,则该部门不存在。在mercurial的命名分支中,分支名称是提交的变更集上不可擦除的标签。变更集永远不会更改它所在的分支。我将假设您至少有一个带
production
。不幸的是,一周后,我们才意识到生产分支位于错误的变更集中
尽管我们已经对存储库做了很多更改,但是还没有提交到生产分支。我需要以某种方式将生产
名称与正确的变更集重新关联,或者删除分支并重新创建它
这样做的最佳方式是什么?如果没有“提交到生产部门”
部门,则该部门不存在。在mercurial的命名分支中,分支名称是提交的变更集上不可擦除的标签。变更集永远不会更改它所在的分支。我将假设您至少有一个带有生产
分支标签的变更集,否则这将变成一个毫无问题的问题
如果你采取这些行动,我想你会没事的:
hg更新
您希望的版本是生产负责人
hg branch production
这只是说下一次提交应该有生产标签
hg commit
您现在将有一个标签为production
现在,当人们对纯生产进行克隆时:
hg clone repopath#production
或
或者更新它
hg update production
他们会得到你想要的发展分支。旧的变更集仍然(并且将始终)具有生产
标签,但这可能没问题。如果真的不行,你可以重建repo并从那些提交中删除标签,但是上面的过程让人们克隆/更新生产正确的东西,所以你应该没事。你可以很容易地通过mq
扩展来完成。显然,这需要每个人都获得存储库的新克隆
如果production
分支是在变更集869中创建的,并且您希望它在变更集842上,您可以说:
hg strip 869
hg update 842
hg branch production
这将从存储库中删除变更集869(及其所有子代),重新编号任何后续变更集以填补空白,然后将生产
名称分配给正确的变更集。我刚刚尝试了这个,但它不起作用<代码>hg分支生产
显示“中止:已存在同名分支(使用“hg更新”切换到该分支)”
hg strip 869
hg update 842
hg branch production