我们正在尝试遵循gitflow分支模型,但有所不同。
我们有四个可以部署产品的服务器环境,每个服务器都有一个用途:开发、内部测试、外部测试和生产。
- DevServer,开发人员在开发时测试他们的不同功能。开发人员无法在他们的机器上进行本地测试,他们必须在 DevServer 上进行更改才能进行测试
- TestServer,一旦开发人员完成,QA 测试人员会在其中测试多个功能
- ReleaseServer,在将发布版本转移到生产环境之前对其进行隔离测试
- 生产服务器。生产服务器
我们正在努力使合并/冲突解决尽可能简单,因此我们创建了两个额外的分支,它们不是 gitflow 模型的一部分。
正常的 gitflow 分支
- 开发
- 主(匹配“生产服务器”)
- 特征XXX
- releaseXXX(每周发布部署到“ReleaseServer”)
但是这两个分支不是标准的,可能需要改变......
- dev-release(DevServer 的副本)
- 测试发布(TestServer 的副本)
那么流程如下:
- 开发人员从“develop”创建他们的“featureXXX”
- 多个开发人员将他们不同的“功能”合并到“dev-release”分支中,“dev-release”分支被发布到“DevServer”,然后所有开发人员都可以在其中测试他们的不同功能。并非所有这些功能都将在下一个版本中
- 一旦开发人员对上面的开发测试感到满意,他们就会将他们的“featureXXX”合并到分支“test-release”中,并将其部署到“TestServer”。并非此处的所有功能都将成为下一个版本的一部分。
- 一旦在“TestServer”上对 featureXXX 进行了测试,开发人员就可以将他们的 featureXXX 关闭为“develop”。
- 然后开发人员要么创建一个新的“releaseXXX”,要么将他们的“featureXXX”合并到现有的“releaseXXX”中。
- 'releaseXXX' 分支被部署到'ReleaseServer' 并经过测试。
- 一旦'releaseXXX'测试被签署,'releaseXXX'被合并到develop和master,并部署到'ProductionServer'
我们是否搞砸了整个 gitflow 模型?