对主干线或干线发展通常是不好的做法。中继线应该用作主代码集,并且应该反映当前代表生产的代码。如果您还没有投入生产,它应该代表黄金版本,应该始终构建并进行自动化回归测试。它不应该用来显示发展状态或活动。保护你的箱子免受变化,并抵制诱惑,让开发人员检查并锁定箱子上的代码。我认为唯一的更新应该是通过合并过程,当你准备好将你的代码返回到主线。 分支时,应考虑开发的目的,复杂性和持续时间。 •是否支持开发新功能或实质性开发的开发团队? •您是否在使用传统流程或各种敏捷口味? •这是为了适应生产补丁或修补程序的开发? •您将在分支上进行哪些开发,特别是测试活动,并且您会保留分支,直到派生的构件被构建,测试并视为可释放为止?
这里有很多模型,但很少有充分考虑“构建”过程以及再生可释放工件的影响。
让我们假设您有以下生命周期:DEV-> SYSTEM-INTEGRATIONTEST-> UAT-> PRE-PROD-> PRODUCTION。假设您从主线创建分支以适应开发和构建过程。您的开发\建立\测试循环继续到UAT。从这个分支产生的文物已经接受了足够的测试,认为它们可能适合发布。您可以声明用户签署的工件也暴露在系统和集成测试中。
有些人主张此时将源代码合并到主干,并建议您在成功建立主干时重新创建RELEASE分支。对我而言,如果解决方案稳定并且在生产之前不需要进一步更改,那么这很好,否则您可能会在其他地方传播错误。在不同的情况下,它需要改变。
如果您在PRE_PROD中发现问题,那么这些“修复”更改将在哪里进行?许多人建议您可以直接在发布分支中更改代码。如果继续,这个修改会产生一个新的构建和一组新的构件。您可以选择将这些工件通过PRE_PROD推回到生产环境,因为基础代码已通过以前的测试进行验证,并且为稳定版本而进行的修改被认为是无风险的?但是你有一个问题。
您无法说明发布到预产品和随后生产的可执行文件\ artefacts已在您的较低环境中进行过测试。尽管信心很高,但发布分支构建的输出与开发构建产生的输出不同。这可能会使审计失败。
对我来说分支是关于管理你的代码,而不是构建输出或者只是发布。如果您主张为释放和释放稳定而进行分支(产前固定),则必须考虑上述风险以及对重要回归测试的需求。
在主干应该代表生产代码的基础上,除非已经推到生产线上,否则不能向其推送代码。我主张创建一个支持开发,构建和发布为一个单一循环的分支。为避免分支机构的寿命和不必要的干线分歧(以及潜在的大爆炸冲突问题),尽可能限制发展并经常与干线释放和返回,以保持其他开发工作的最新状态。