searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Git代码分支管理规范

2023-02-20 03:06:49
122
0

代码分支定义规则

release

发版分支,只允许合并分支不允许提交代码。所有任何需求上线必须使用release,上线前的测试回归只能使用release回归。UAT环境部署必须使用release分支。

 

master

线上稳定版本代码分支,不允许任何人提交代码到master,只允许合并release的代码过来。release上线观察一两天确保稳定没大问题后合并到master。

 

test 

测试环境共用的代码分支,只允许合并分支不允许提交代码。代码在各自需求的开发分支开发好后再合并过来test分支提测。该分支代码只允许进,不允许出。

 

dev

开发环境共用的代码分支,只允许合并分支不允许提交代码。代码在各自需求的开发分支开发好后再合并过来dev分支联调。该分支代码只允许进,不允许出。

 

feat_{yymmdd}_{tapdId}_{var}

产品业务需求的开发分支,基于master分支拉取。{yymmdd}为6位数的年月日,是 评审需求时约定的期望上线时间,{tapdId}为tapd上的ID, {var}为自定义的参数,可不填。基于本规则,一个tapd需求对应一个开发分支。

 

fix_{yymmdd}_{tapdId}_{var}

线上问题修复的分支,基于master分支拉取。{yymmdd}为6位数的年月日,是约定的期望上线时间,{tapdId}为tapd上的ID, {var}为自定义的参数,可不填。基于本规则,一个tapd需求对应一个开发分支。

 

opt_{yymmdd}_{tapdId}_{var}

技术侧优化需求的开发分支,基于master分支拉取。{yymmdd}为6位数的年月日,是约定的期望上线时间,{tapdId}为tapd上的ID, {var}为自定义的参数,可不填。基于本规则,一个tapd需求对应一个开发分支。

 

常规需求开发中各类型分支之间代码流转如图

代码合并

  • 如果合并代码时出现不可编译的异常,则从对应的聚合分支拉fix分支出来修复再合并过去。
  • 在开发分支开发过程中,大家务必保持每天都合一次master分支的代码至当前开发分支,防止开发分支代码落后太多导致合并上线时冲突太多、合并难度太大。
  • gitlab上提交合并请求时别勾选“Delete source branch when merge request is accepted.” ,保留原分支。
  • 开发分支只允许合并master分支代码,不允许合并任何其他分支代码。
  • 开发分支合并到聚合分支,解决冲突应该这么操作: 假如开发分支是aaa,需要merge到test分支去。  步骤如下 1.基于开发分支aaa拉一个临时分支temp。2.将临时分支temp合并到聚合分支test。3.有冲突时,依据gitlab提示解决即可(gitlab的解决步骤就是先合并test到temp,然后再合并temp到test,就是在临时分支解决冲突再合过去聚合分支test)。以上三步全程在gitlab上界面操作,这样可以确保开发分支代码是干净的,不会合并到聚合分支的其他需求代码。
  • 理论上代码在release又还没上生产的时间是UAT集成回归时间,时间跨度一般为一两天。如果这一两天时间内有线上bug需要紧急修复且要紧急上线,等不了release的常规发版时间。则规则如下:首先从master分支拉取fix分支用来修复bug,fix分支改好后先合到release分支,然后再使用fix分支发版。同时,release分支需要重新打包上UAT。以免release分支的包代码落后。
  • 注意:所有发版需求,都需先合到release再发版。合release应该先基于开发分支拉取一个releasetemp分支,然后再使用releasetemp合并到release分支。release和master的合并请勿使用temp操作。
  • 所有的发版需求,都需要检查打包之后到正式操作发版的时间区间,release是否有新的代码提交。如有新的代码提交合并,务必确认清楚这批新的代码是否要上线,如果需要则需要重新打包。
  • 提测时,需合一次master的代码到开发分支再提测,保证代码不要落后线上分支。
  • 不小心合错了还没到发版时间的分支代码到release分支咋办?revert一下即可。下次想发版的时候发现分支代码合不过去了,咋办?对你上次的revert再执行一次revert即可。参考:https://blog.csdn.net/cxn945/article/details/48372327

(TODO:发版系统部署UAT和生产时写死release分支,不允许修改。测试环境固定test、开发环境固定dev)

bugfix紧急上线

CHANGELOG

代码里应该维护一个Markdown格式的CHANGELOG,每次上线时记录清楚变更。

服务版本管理人

拥有将代码合并到master和release分支的权限。项目进UAT和上线时,需要去gitlab上发起申请合并请求,由版本管理人审批review后合并代码到release分支。

上线成功后,观察一段时间(至少一天),版本管理人合并release的最新稳定代码至master。如果一天内服务又发生二次发布,则观察时间顺延一天。

Git代码提交规范

在tapd的右上角,有个链接图标,可以复制到源码提交关键字。Git提交时使用该源码关键字提交,这源码关键字包含了tapd的id,务必确保按照规范提交,否则影响脚本自动检查代码是否有遗漏的判断。具体操作参考

另外一个文件

(建立开发分支时务必保证按照规范命名,确保开发分支有带上tapd的 ID)

 

打标签

每上线一次打一次标签。(可考虑发版工具里自动实现)

 

代码合并方式

使用gitlab网站上的merge request操作。

0条评论
0 / 1000
肖****睿
13文章数
0粉丝数
肖****睿
13 文章 | 0 粉丝
原创

Git代码分支管理规范

2023-02-20 03:06:49
122
0

代码分支定义规则

release

发版分支,只允许合并分支不允许提交代码。所有任何需求上线必须使用release,上线前的测试回归只能使用release回归。UAT环境部署必须使用release分支。

 

master

线上稳定版本代码分支,不允许任何人提交代码到master,只允许合并release的代码过来。release上线观察一两天确保稳定没大问题后合并到master。

 

test 

测试环境共用的代码分支,只允许合并分支不允许提交代码。代码在各自需求的开发分支开发好后再合并过来test分支提测。该分支代码只允许进,不允许出。

 

dev

开发环境共用的代码分支,只允许合并分支不允许提交代码。代码在各自需求的开发分支开发好后再合并过来dev分支联调。该分支代码只允许进,不允许出。

 

feat_{yymmdd}_{tapdId}_{var}

产品业务需求的开发分支,基于master分支拉取。{yymmdd}为6位数的年月日,是 评审需求时约定的期望上线时间,{tapdId}为tapd上的ID, {var}为自定义的参数,可不填。基于本规则,一个tapd需求对应一个开发分支。

 

fix_{yymmdd}_{tapdId}_{var}

线上问题修复的分支,基于master分支拉取。{yymmdd}为6位数的年月日,是约定的期望上线时间,{tapdId}为tapd上的ID, {var}为自定义的参数,可不填。基于本规则,一个tapd需求对应一个开发分支。

 

opt_{yymmdd}_{tapdId}_{var}

技术侧优化需求的开发分支,基于master分支拉取。{yymmdd}为6位数的年月日,是约定的期望上线时间,{tapdId}为tapd上的ID, {var}为自定义的参数,可不填。基于本规则,一个tapd需求对应一个开发分支。

 

常规需求开发中各类型分支之间代码流转如图

代码合并

  • 如果合并代码时出现不可编译的异常,则从对应的聚合分支拉fix分支出来修复再合并过去。
  • 在开发分支开发过程中,大家务必保持每天都合一次master分支的代码至当前开发分支,防止开发分支代码落后太多导致合并上线时冲突太多、合并难度太大。
  • gitlab上提交合并请求时别勾选“Delete source branch when merge request is accepted.” ,保留原分支。
  • 开发分支只允许合并master分支代码,不允许合并任何其他分支代码。
  • 开发分支合并到聚合分支,解决冲突应该这么操作: 假如开发分支是aaa,需要merge到test分支去。  步骤如下 1.基于开发分支aaa拉一个临时分支temp。2.将临时分支temp合并到聚合分支test。3.有冲突时,依据gitlab提示解决即可(gitlab的解决步骤就是先合并test到temp,然后再合并temp到test,就是在临时分支解决冲突再合过去聚合分支test)。以上三步全程在gitlab上界面操作,这样可以确保开发分支代码是干净的,不会合并到聚合分支的其他需求代码。
  • 理论上代码在release又还没上生产的时间是UAT集成回归时间,时间跨度一般为一两天。如果这一两天时间内有线上bug需要紧急修复且要紧急上线,等不了release的常规发版时间。则规则如下:首先从master分支拉取fix分支用来修复bug,fix分支改好后先合到release分支,然后再使用fix分支发版。同时,release分支需要重新打包上UAT。以免release分支的包代码落后。
  • 注意:所有发版需求,都需先合到release再发版。合release应该先基于开发分支拉取一个releasetemp分支,然后再使用releasetemp合并到release分支。release和master的合并请勿使用temp操作。
  • 所有的发版需求,都需要检查打包之后到正式操作发版的时间区间,release是否有新的代码提交。如有新的代码提交合并,务必确认清楚这批新的代码是否要上线,如果需要则需要重新打包。
  • 提测时,需合一次master的代码到开发分支再提测,保证代码不要落后线上分支。
  • 不小心合错了还没到发版时间的分支代码到release分支咋办?revert一下即可。下次想发版的时候发现分支代码合不过去了,咋办?对你上次的revert再执行一次revert即可。参考:https://blog.csdn.net/cxn945/article/details/48372327

(TODO:发版系统部署UAT和生产时写死release分支,不允许修改。测试环境固定test、开发环境固定dev)

bugfix紧急上线

CHANGELOG

代码里应该维护一个Markdown格式的CHANGELOG,每次上线时记录清楚变更。

服务版本管理人

拥有将代码合并到master和release分支的权限。项目进UAT和上线时,需要去gitlab上发起申请合并请求,由版本管理人审批review后合并代码到release分支。

上线成功后,观察一段时间(至少一天),版本管理人合并release的最新稳定代码至master。如果一天内服务又发生二次发布,则观察时间顺延一天。

Git代码提交规范

在tapd的右上角,有个链接图标,可以复制到源码提交关键字。Git提交时使用该源码关键字提交,这源码关键字包含了tapd的id,务必确保按照规范提交,否则影响脚本自动检查代码是否有遗漏的判断。具体操作参考

另外一个文件

(建立开发分支时务必保证按照规范命名,确保开发分支有带上tapd的 ID)

 

打标签

每上线一次打一次标签。(可考虑发版工具里自动实现)

 

代码合并方式

使用gitlab网站上的merge request操作。

文章来自个人专栏
技术规范
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0