另一个分支默认?

时间:2011-03-24 19:19:30

标签: mercurial branch

我在Bitbucket和我的本地机器上有一个Mercurial回购,两者都是镜像,是最新的。我创建了一个功能分支,反映在两个repos中。我在功能部门完成了所有工作。

功能分支现已完成,我现在想把它作为主回购和本地副本的默认设置。我并不关心默认分支,已经有足够的工作进入功能分支,我想要做的就是将其指定为新的默认分支。

我认为我不想合并也不应该合并?我怎么能这样做,所以本地和远程都不会混淆?

4 个答案:

答案 0 :(得分:25)

feature-branch合并到default然后关闭feature-branch

$ hg checkout default
$ hg merge feature-branch
$ hg commit
$ hg checkout feature-branch
$ hg commit --close-branch

没有更清晰明智的方式(我知道)要“feature-branch默认”。

有一件事情不是很好,但你可以做的是在default之上提交feature-branch

$ hg checkout feature-branch
$ hg branch default
$ hg commit

但这会在default分支中留下两个头,这是次优的。

答案 1 :(得分:19)

从Mercurial 2.4开始,您可以创建一个名为@的书签,Mercurial将检出该修订版的新克隆。

但是,我仍然会尝试使用default作为主要开发的分支。这样做会给已经习惯使用Mercurial的开发人员带来最少的惊喜--Murcurial中的wiki describes the standard way to use branches

如果您遵循使用default作为开发主分支的传统建议,那么您应该在合并之前关闭功能分支:

$ hg update feature-branch
$ hg commit --close-branch -m "Feature done, merging into default branch"
$ hg update default
$ hg merge feature-branch
$ hg commit

如果您在启动功能分支后没有在默认分支上完成任何工作,那么此合并将是微不足道的,并且没有冲突。否则你将不得不解决冲突。如果您确定要保留功能分支中的所有内容,则可以执行

$ hg merge --noninteractive --tool internal:local feature-branch
$ hg revert --all --rev feature-branch

而不仅仅是上面的hg merge。这将确保default上的新提交看起来与feature-branch上的最后一次提交完全相同。

答案 2 :(得分:9)

我通过关闭默认分支而没有合并成功。

在我的开发人员工作目录中:

$ hg update default

$ hg commit --close

然后我的开发分支成为新的默认分支。 但我不知道为什么选择我的开发分支的规则 作为新的默认值。 我认为这是因为它是我的提示? (或者可能最后改变了分支?(小费?))

我也认为下次你必须重复这一点。 因为我认为我选择的分支名称被“默认”名称“覆盖”。

拥有分支名称会很好。

DEV-的projectname-version.x =默认

问候

答案 3 :(得分:1)

我想做你刚才所描述和追捕的事情,直到我找到一个使用revert命令完成你所描述的答案的答案。这是我使用的代码:

hg revert --all --rev $ {1}

hg commit -m"将分支$ {1}恢复为默认值"

其中$ {1}是修订号或分支名称。这两行实际上是bash脚本的一部分,但是如果你想手动执行它们,它们可以自行工作。

如果您需要向发布分支添加热修复,但需要从默认构建(直到我们使用CI工具并且能够从分支构建并随后取消发布分支),这非常有用。