Continuous integration 如何使用巡航控制和Mercurial回滚和构建

Continuous integration 如何使用巡航控制和Mercurial回滚和构建,continuous-integration,cruisecontrol.net,kiln,Continuous Integration,Cruisecontrol.net,Kiln,我有一个Kill/Mercurial代码库,用于web应用程序,该应用程序使用Cruise Control.NET进行持续集成。通常,我们在本地提交代码,当我们准备好测试时,我们推送到中央服务器。Cruise Control会定期检查该服务器上的存储库是否有新版本,找到后会构建该版本,并将生成的文件复制到相应的web服务器。如果测试成功,我们将手动强制在主生产服务器上进行构建,一切正常 然而,最近我们遇到了一个小问题。我们在上个月推出生产的版本中发现了一个bug,需要修复。从那时起,已经有50次

我有一个Kill/Mercurial代码库,用于web应用程序,该应用程序使用Cruise Control.NET进行持续集成。通常,我们在本地提交代码,当我们准备好测试时,我们推送到中央服务器。Cruise Control会定期检查该服务器上的存储库是否有新版本,找到后会构建该版本,并将生成的文件复制到相应的web服务器。如果测试成功,我们将手动强制在主生产服务器上进行构建,一切正常

然而,最近我们遇到了一个小问题。我们在上个月推出生产的版本中发现了一个bug,需要修复。从那时起,已经有50次左右的提交,而在这50次提交中引入的代码还远远没有准备好投入生产。我们知道我们可以在本地回滚(更新)到推出生产的版本,并修复代码,但我们无法将其推到窑上,并将其推到巡航控制——窑服务器上的Mercurial抱怨有多个磁头。解决这个问题的最好方法是什么

我们在谷歌上搜索了一下,找到了对分支和标记的引用。我们最终在服务器上的存储库中创建了一个新分支。那个分支有我们的主存储库减去那50个提交。然后,我们进行了错误修复,并编辑了巡航控制配置,以查看那里,而不是主存储库。在一些构建之后,我们在生产服务器上修复了bug。这似乎需要大量的工作才能回滚、修复并将其推送到web服务器


因为我们是一家小商店,我们通常有自己的项目要做。虽然我们对版本控制并不陌生,但这个概念有一些共同的方面,我们还没有处理过。

您说过代码中有一个问题,之后您进行了大约50次提交。因此,您创建了一个包含当前代码-50提交的分支

所以我的建议是,它不应该是你的分支,而应该是主干。分支代码应该只包含主要更改的代码,即您在该代码中工作了很长时间,同时可能有机会在主干中执行一些代码,并且可以转移到生产中

因此,在创建CI时,我的建议是分别为主干和分支设置CI,以便您可以进行测试

同时,只能从主干线转移到生产线