2013-02-11 51 views
0

我有一个使用Cruise Control.NET进行持续集成的Web应用程序的Kiln/Mercurial代码存储库。通常,我们在本地提交代码,当我们准备测试时,我们会推送到我们的中央Kiln服务器。 Cruise Control会定期检查该服务器上的存储库是否有新的修订版,并在找到该修订版时创建它并将生成的文件复制到相应的Web服务器。如果它测试出来,我们然后手动强制构建到我们的主生产服务器,并且都很好。如何使用Cruise Control和Mercurial进行回滚和构建

不过最近我们发现了一个小呃逆。我们在上个月发布的版本中发现了一个缺陷,需要修复它。自那时以来,已经有50次左右的提交,并且在这50次提交中引入的代码远未准备好投入生产。我们知道我们可以在本地回滚(更新)到推出到生产的版本并修复代码,但我们没有办法将它推送到Kiln并将其发送给Cruise Control - Kiln服务器上的Mercurial抱怨多个头。解决这个问题的最好方法是什么?

我们搜索了一下,发现了对分支和标签的引用。我们最终在Kiln服务器的存储库中创建了一个新分支。该分支有我们的主要存储库减去那50个提交。然后,我们修正了错误并修改了巡航控制配置,以查找那里而不是主存储库。经过一些构建之后,我们将bug修复在生产服务器上。这看起来像是大量的工作来回滚,修复并将其推送到Web服务器。

由于我们是一家小商店,我们通常有我们自己的项目。没有有意的分支(到现在为止),甚至是最小的合并,所以虽然我们并不是新的版本控制,但这个概念有一些共同的方面,我们还没有处理。

回答

0

你说你的代码有问题,然后你做了50次提交。所以你创建了一个包含当前代码的分支 - 50次提交。

所以我的建议是,它不应该是你的分支,但它应该只是中继。分支机构代码应包含仅用于重大更改的代码,即,您在该代码中工作了很长时间,同时可能有机会在主干中执行一些代码,并可将其移至生产中。

因此,在创建CI时,我的建议是为Trunk和分支分别设置CI,因此您可以执行测试。

也应该只从主干发生生产。