2010-10-12 61 views
0

我将库从Git转换为Mercurial,并为我们的生产开发创建了一个命名分支production。不幸的是,一周后,我们刚刚意识到production分支处于错误的变更集。如何在Mercurial中将命名分支与不同的变更集相关联?

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

这样做的最好方法是什么?

回答

1

通过使用mq扩展名,您可以非常轻松地完成此操作。显然,这需要每个人都获得一个新的版本库。

如果production分公司在变更869创建的,你想它变更842,你可以说:

hg strip 869 
hg update 842 
hg branch production 

这将从库中删除变更869(及其所有后代),编号为0,1,3,5后续更改集以填补空白,然后将production名称分配给正确的更改集。

0

如果没有“提交到production分支”,那么该分支尚不存在。在mercurial的命名分支中,分支名称是已确认变更集上不可磨灭的标签。变更集永远不会改变它所在的分支。我打算假设你至少有一个变更集与production分支标签,或者这变成了一个无问题的问题。

如果采取这些行动,我想你会没事结束:

  1. hg update你希望是生产头修订
  2. hg branch production这只是说下一个提交应该有产品标签
  3. hg commit你现在必须与标签的新承诺现在production

当人们这样做交流孤独的只是生产:

hg clone repopath#production 

hg clone -r production repopath 

或更新到它

hg update production 

他们会得到你想要发展的分支。旧的changeset(s)将仍然(并且始终)具有production标签,但这可能没问题。如果真的不好,你可以重建回购并从这些提交中删除标签,但上述过程可以让人克隆/更新production正确的东西,所以你应该没问题。

+0

我刚试过这个,它不起作用。 'hg branch production'说“中止:同名分支已存在(使用'hg update'切换到它)” – 2010-10-19 22:23:10

相关问题