我是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
中所做的修复所震撼。
我做错了什么吗?我在某处错过了一步吗?
答案 0 :(得分:1)
基本上,您需要合并修复程序,以便再次只有1个头。有a way of managing 2 branches使得发布版本(与开发并行)的错误修正更容易:
我使用的过程除了Stable
分支外,还创建一个名为default
的命名分支。我在default
分支上处理新功能和诸如此类的东西。每当我执行实际的代码发布时,我会将其合并到Stable
分支,并仅在该分支上标记v1.0
,v1.1
等内容。
然后我可以在default
分支上继续开发,但是当出现与先前版本相关的错误时,我可以将该修复程序放在Stable
分支上并重新编译。准备好后,我会将Stable
分支的修正合并到default
,以确保Stable
始终只是default
的一部分。
如果您开始使用此功能,则首次将该命名分支推送到中央时,您必须使用hg push --force
,但只能使用一次。