我将库从Git转换为Mercurial,并为我们的生产开发创建了一个命名分支production
。不幸的是,一周后,我们刚刚意识到production
分支处于错误的变更集。如何在Mercurial中将命名分支与不同的变更集相关联?
尽管我们已经对存储库进行了一些更改,但尚未对production
分支提交任何提交。我需要以某种方式将production
名称与正确的更改集重新关联,或者删除该分支并重新创建它。
这样做的最好方法是什么?
我将库从Git转换为Mercurial,并为我们的生产开发创建了一个命名分支production
。不幸的是,一周后,我们刚刚意识到production
分支处于错误的变更集。如何在Mercurial中将命名分支与不同的变更集相关联?
尽管我们已经对存储库进行了一些更改,但尚未对production
分支提交任何提交。我需要以某种方式将production
名称与正确的更改集重新关联,或者删除该分支并重新创建它。
这样做的最好方法是什么?
通过使用mq
扩展名,您可以非常轻松地完成此操作。显然,这需要每个人都获得一个新的版本库。
如果production
分公司在变更869创建的,你想它变更842,你可以说:
hg strip 869
hg update 842
hg branch production
这将从库中删除变更869(及其所有后代),编号为0,1,3,5后续更改集以填补空白,然后将production
名称分配给正确的更改集。
如果没有“提交到production
分支”,那么该分支尚不存在。在mercurial的命名分支中,分支名称是已确认变更集上不可磨灭的标签。变更集永远不会改变它所在的分支。我打算假设你至少有一个变更集与production
分支标签,或者这变成了一个无问题的问题。
如果采取这些行动,我想你会没事结束:
hg update
你希望是生产头修订hg branch production
这只是说下一个提交应该有产品标签hg commit
你现在必须与标签的新承诺现在production
当人们这样做交流孤独的只是生产:
hg clone repopath#production
或
hg clone -r production repopath
或更新到它
hg update production
他们会得到你想要发展的分支。旧的changeset(s)将仍然(并且始终)具有production
标签,但这可能没问题。如果真的不好,你可以重建回购并从这些提交中删除标签,但上述过程可以让人克隆/更新production
正确的东西,所以你应该没问题。
我刚试过这个,它不起作用。 'hg branch production'说“中止:同名分支已存在(使用'hg update'切换到它)” – 2010-10-19 22:23:10