1、背景
版本控制系统目前在各大企业项目中都会使用,但目前对其使用方式各有不同,没有明确的管理模式,也很少有专门的管理人员负责代码版本控制;对于有序规划和管理软件研发流程需要完整的分支管理策略
2、分支分类及命名规范
分支分类:
主分支-master ; 上线分支-release ; 测试分支-feature ;开发分支 -[name]
命名规范:
主分支 => msater
上线分支 => release-[上线时间] 例:release-20200101
测试分支 => feature-[上线时间] 例:feature-20200101
开发分支 => [name]-[上线时间] 例: Victor-20200101
3、主分支 - master
master分支为项目主分支,每个项目一般情况只有一个主分支;主分支为稳定分支,当前生产环境代码与主分支代码一致,且随着每次迭代更新稳定代码。
4、预生产 - preproduction
preproduction为项目的预生产分支,每个项目可有一个或多个预生产分支;也是上线之前灰度测试的分支;该分支内容需完全通过测试用例,test分支测试通过后才合入该分支,其内容相对较稳定,更新内容变化合入之后变化较小,更新周期控制较长。
5、测试 - test
test分支为项目的测试分支,每个项目可有一个或多个测试分支,根据迭代内容定义,该分支是开发人员自测通过后的下一步分支,development分支测试通过之后合入该分支,主要有测试人员负责测试的分支,其内容相对不稳定,更新内容变化大,更新周期较短。
6、开发 - development
development为项目的开发分支,根据项目及迭代内容周期由开发人员建立的分支;开发人员开发的内容可直接push至该分支,其内容由开发人员自己控制,也会存在版本的概念;主要由开发人员负责,其内容最不稳定,更新内容变化最大,更新周期最短
7、整体流程及注意事项
1、确认上线时间, 从master分支拉取release分支,=> new branch release-20200101
2、确认开发任务, 从release分支拉取dev分支,=> new branch dev-jecket-20200101
3、确认测试时间,从release分支拉取feature分支,=> new branch feature-20200101
4、开发完成, 将dev分支合入test分支 => devmerge to feature
5、测试完成, 将test分支合入release分支 =>test merge to release
6、上线完成, release分支合入master分支 => release merge to master
注意*:
1、多人开发 feature分支 合入 release分支前需从 release 合入 feature分支以及时更新最新代码及解决冲突,出现冲突需与同开发人员沟通过后解决冲突,之后进入(3)阶段
2、多release分支并存,例:master拉取release-20200501、master拉取release-20150529,
release-20200501上线成功合入master时,需将master再次合入 release-20150529
若出现冲突需涉及两分支的开发人员共同解决冲突,合入release-20150529后需测试人员回归release-20200501内容
8、总结
一般项目使用都会省去feature阶段,也就是test与release环境共用一个relase分支,管理也会相对简单点,在合代码之前一般不会用手动本地合,通常由负责人code review之后合入
这里涉及到code review可以关注一下这篇文章