我有一个用于使用 Cruise Control.NET 进行持续集成的 Web 应用程序的 Kiln/Mercurial 代码存储库。通常,我们在本地提交我们的代码,当我们准备好测试时,我们推送到我们的中央 Kiln 服务器。Cruise Control 会定期检查该服务器上的存储库是否有新修订,当它找到它时,它会构建它并将生成的文件复制到适当的 Web 服务器。如果它通过测试,然后我们手动强制构建到我们的主生产服务器,一切都很好。
然而,最近,我们遇到了一个小问题。我们在上个月推出生产的版本中发现了一个错误,需要修复。从那时起已经有 50 次左右的提交,而这 50 次提交中引入的代码还远未准备好投入生产。我们知道我们可以在本地回滚(更新)到已发布到生产环境的版本并修复代码,但我们无法将其推送到 Kiln 并将其发布到 Cruise Control —— Kiln 服务器上的 Mercurial 抱怨多个头。解决这个问题的最佳方法是什么?
我们搜索了一下,发现了对分支和标签的引用。我们最终在 Kiln 服务器的存储库中创建了一个新分支。那个分支有我们的主存储库减去那 50 个提交。然后我们进行了错误修复并编辑了 Cruise Control 配置以查看那里而不是主存储库。经过一些构建后,我们在生产服务器上修复了我们的错误。回滚、修复并将其推送到 Web 服务器似乎需要大量工作。
由于我们是一家小商店,我们通常有自己的项目要处理。没有故意的分支(直到现在),甚至最小的合并,所以虽然我们对版本控制并不陌生,但这个概念有一些共同的方面我们还没有处理过。