Mercurial工作流程帮助 - 如何制作标签的标签并将其转到中央仓库?

时间:2011-07-11 17:18:11

标签: mercurial

我是HG的新手,我正在寻找一些关于如何处理这种情况的建议。

我们在Kiln有一个中央回购。我团队中的三个人代码离开,最终准备好我们的代码,我们将其标记为Version1。然后我们开心地开始研究我们的下一个主要版本。在进行工作时,需要在Version1中修复一个关键错误,以便詹姆斯使用hg clone -r Version1 http://centralrepo克隆他的回购,然后进行更改并将其标记为Version1.1

现在,Version1.1如何回到中央仓库?使用hg push导致中止,因为有两个远程头。没有它在中央回购中,如果有必要,道格永远不会出现并修复Version1.1

如何修改我的流程,以便我的所有代码始终存储在中央仓库中并轻松拉入dev分支?

UPDATE /修改

根据Joel的建议,我做了以下调整:

在Kiln网站上,我创建了我的主要活动开发者仓库。一旦我有代码,我就从中创建一个新的分支。

克隆我的ActiveDev分支:hg clone http://activeDev code-activeDev 我克隆了我的稳定分支:ht clone http://stable code-stable

我在我的稳定分支上设置了一个标记:hg tag V1.0然后将其推送到稳定分支和活动开发分支。当转到activeDev时,我使用-f命令。现在两个分支都是相同的。

我做了hg pull并开始使用ActiveDev中的新功能。然后将该功能推回到中央:

hg com hg push

Stable得到一个bug修复,然后使用相同的两个命令推送到它自己的repo。现在,当我尝试将该修复程序推送到activeDev分支时,我再次给出了“你正在制作两个头,使用-f”消息。但是,如果我强制它,我在activeDev中之前推送的新功能会被我在stable中所做的修复所震撼。

我做错了什么吗?我在某处错过了一步吗?

1 个答案:

答案 0 :(得分:1)

基本上,您需要合并修复程序,以便再次只有1个头。有a way of managing 2 branches使得发布版本(与开发并行)的错误修正更容易:

我使用的过程除了Stable分支外,还创建一个名为default的命名分支。我在default分支上处理新功能和诸如此类的东西。每当我执行实际的代码发布时,我会将其合并到Stable分支,并仅在该分支上标记v1.0v1.1等内容。

然后我可以在default分支上继续开发,但是当出现与先前版本相关的错误时,我可以将该修复程序放在Stable分支上并重新编译。准备好后,我会将Stable分支的修正合并到default,以确保Stable始终只是default的一部分。

如果您开始使用此功能,则首次将该命名分支推送到中央时,您必须使用hg push --force,但只能使用一次。