到目前为止,关于数字货币交易平台的项目总共有3个,分别是前台页面项目、后端接口和后台管理的项目、撮合服务项目。后续可能还会有更多的项目要进行维护。

1. 代码版本递增规范

现在对这些项目的版本号进行规范管理,每次项目版本号的迭代,都需要管理人员统一商定,并严格按照以下要求来制定版本号。

版本格式:v + 主版本号.次版本号.修订号,比如 v1.0.1,注意v小写。版本号中的数字最多不能超过3位。版本号递增规则如下:

  1. 主版本号:当做了不兼容的 API 修改,或者重大架构更新时。

  2. 次版本号:当做了向下兼容的功能性新增、更新时。

  3. 修订号:当做了向下兼容的bug修复时。

2. 代码分支管理要求

鉴于之前的代码合并过程中,发生了部分未完成的代码被合并到开发分支的情况,导致了代码无法进行快速拆分和版本标记,所以以后要求所有开发人员及管理人员必须严格遵照Git Flow来做代码分支的管理。

以下关于本团队代码分支管理要求的内容,均参照于这里关于Git Flow的描述:Git三大特色之WorkFlow(工作流)

2.1 长期分支

一个项目中,要保证2个长期存在的分支,分别为master和develop分支。这2个分支均设为保护分支(只有项目中的Master角色才能允许其他分支的代码被合并到此分支上)。master分支主要用于标记版本号(即添加Tag)。develop分支用于日常的开发内容合并。develop是master下的分支。

2.2 辅助分支

除了2个长期存在的分支外,还要有3类辅助分支,辅助分支在被合并后可以删除。分别为Feature Branch、Release Branch 和 Hotfix Branch

2.2.1 Feature Branch

feature分支用来做一个模块/功能开发或更新,分支命名要求:feature/{功能模块简称标识},不要和其他类型的分支命名弄混淆就好,举个坏例子,命名为 master 就是一个非常不妥当的举动。

该分支上的功能完成后,申请合并到 develop 分支,并选择被合并后删除该分支。

如果一个功能模块只有一个开发人员来进行,那么该开发人员可以在该feature分支上直接进行开发。

如果一个功能模块由多个开发人员来进行,那么为了避免代码冲突和覆盖,每个开发人员需要在该feature分支上检出各自的分支,命名要求:feature/{功能模块简称标识}/{开发人员姓名全拼},开发完毕后将各自分支上的代码合并到feature分支上。

2.2.2 Release Branch

release分支用来做版本发布的预发布分支,分支命名要求:release/{预发布的版本号}。例如在软件 v1.0 版本的功能全部开发完成,并且已经被合并到develop分支后,那么从develop分支检出release/v1.0分支,将release/v1.0分支上的代码部署到测试服务环境中。测试过程中出现的问题,可在该release分支上进行修改提交。涉及多个开发人员的话,需要在该release分支上检出各自的分支进行修改,命名要求:release/v1.0/{开发人员姓名全拼}

测试完毕准备发布的时候,将该release分支上的代码分别合并到 master 和 develop分支,合并到master 分支后要打上对应版本标签 v1.0,同时写明功能模块新增/更新的详细描述。记住,待合并到master和develop分支之后,删除该release分支。

release分支的好处是,在测试的时候,不影响下一个版本功能的并行开发。

2.2.3 Hotfix Branch

hotfix分支是用来做线上的紧急 bug 修复的分支,命名要求:hotfix/{bug简称标识}。当线上代码出现了问题,从master分支直接检出hotfix分支,然后在该hotfix上修复bug。涉及多个开发人员的话,需要在该hotfix分支上检出各自的分支进行修改,命名要求:hotfix/{bug简称标识}/{开发人员姓名全拼}

待问题修复后,将hotfix分支中的代码合并到 master 和 develop 分支,全部合并完成后删除该hotfix分支。注意,合并到 master 分支的时候,要打上修复后的版本标签,比如从v1.0 -> v1.0.1,同时要写明修复bug的详细描述。

2.3 Git Flow示意图

上述关于长期分支和辅助分支之间的工作切换流程,可以总结为下面的一张图。
Git Flow.jpg