这篇文章(How do you manage database revisions on a medium-sized project with branches?)让我想知道如何最好地使用分支和部署到开发、登台和生产(以及本地副本)来处理 Web 项目。
我们本身没有“发布”:如果一个功能大到足以引起注意,我们将其推送(在必要的测试/等之后),否则我们批量处理一些,当感觉“舒适”时,推送那些活着。目标是每月部署一次或两次以上,因为不断变化的站点往往会让用户有点不安。
以下是我们的做法,感觉有点脆弱(目前使用 svn,但考虑切换到 git):
- 两个“分支”——DEV 和 STAGE,给定的 STAGE 版本标记为 TRUNK
- 开发人员检查每个更改的 TRUNK 副本并为其创建一个分支
- 开发人员在本地工作,经常签入代码(就像投票一样:尽早且经常)
- 当开发人员感到满意时,它并没有完全损坏,将分支与 DEV 合并并部署到开发站点。
- 根据需要重复 3-4,直到更改“完成”
- 将变更分支与 STAGING 合并,部署到暂存站点。进行预期的最终测试。
- 一段时间后,将给定的 STAGE 版本标记为 TRUNK,并实时推送主干
- 合并 TRUNK 更改回 DEV 以保持同步
现在,其中一些步骤非常复杂,而且在实践中很难做到(TRUNK -> DEV 总是中断),所以我不得不想象有更好的方法。
想法?