[关闭]
@bornkiller 2019-02-22T16:57:43.000000Z 字数 1727 阅读 2398

分支管理规范

前端规范


前言

软件项目迭代,版本管理系统必不可少。基于版本管理,连接项目启动,开发,测试,部署,迭代流程,打造高效的前端开发 workflow,以提升效率。分支管理则为重中之重,良好的分支管理规范,避免项目分支混乱。

客观条件

中小企业,基础设施并不完善,无法完全沿用 githubgitlab 风格。

当前无规范迭代状态,暴露问题如下:

主要业务面向企业,对稳定性的要求远大于快速迭代的需求,业务开发满足以下条件:

分支说明

分支管理的核心在于提升开发效率,分支派生需要解决从何处来,实现什么功能,到何处去的问题。主要包含以下几类分支:

master 作为主分支。分支仅包含测试通过的代码,用于生产环境上线。所有代码通过分支合并而来,禁止直接在主分支上开发[1]

hotfix 作为紧急修复分支。若生产出现严重问题,直接从 master 分支切出,bug 修复之后,合并回 master 分支,保证代码的连续性,避免问题修复与迭代出现重大冲突,延误时机。

technique 作为技术升级分支,feature 作为业务开发分支,特别约定,非紧急 bug 反馈,统一纳入 technique 范畴,统一发布计划。

masterhotfix 分支簇功能非常明确,开发分支与测试分支具体环境下不尽相同,具体环境下具体说明。

分支管理

使用 github flow 方式,开发模式如下:

  1. 开发人员接受 issue,从 master 分支切出开发分支,命名风格统一为 分支簇/分支名称,分支簇名称依据 issue 类型选择,分支名称多个单词使用 - 连接。
  2. 开发分支上进行开发,并推送到仓库对应分支;
  3. 自测完毕,向 master 分支发起 pull request[2],并连接对应 issue
  4. 持续集成部署开发分支到 uat 环境,自测或测试人员介入,bug 修复全部在开发分支上进行[3]
  5. 测试完毕后,其他成员 code review 完毕[4],合并到主干分支,生产上线[5]

若生产出现严重问题,直接从 master 分支切出 hotfix 分支,新建 issue 描述,修复完毕后,向 master 分支发起 pull request,并连接对应 issue。部署后,删除 hotfix 分支。

github flow.png-59.3kB

命令行描述

  1. # 开辟特性分支
  2. git checkout -b feature/staff-manage master;
  3. git checkout -b feature/holiday master;
  4. # 独立代码演进
  5. git add something;
  6. git commit -m "something";
  7. git push origin;
  8. # `code review` 合并之前,要求使用 `git rebase` 简化提交历史,选择`gitlab` 合并后删除原始分支
  9. git rebase master;

版本号变更

发布版本包含多个开发分支

版本号包含双层含义,源码中版本号记录变更,代码仓库中 版本 tag,建议完成 pull request 之后,owner 拉取代码,变更版本后进行发布。

联系作者

Email: hjj491229492@hotmail.com


[1] 实践中,使用 gitlab 权限管理,通过 protect branch 特性限制代码直接推送,控制 merge request 操作权限,保障所有合并进入主分支代码质量。
[2] 特殊情况说明,一般分支合并前,需确认特性分支能够 fast forward merge,可能需要 rebase 操作;如果同时有多个 pull requestmaster 分支已经合并其他特性分支代码,导致无法 fast forward,可以本地优先 rebase master 处理,若为简化 rebase 过程,考虑合并提交。
[3] QA人员对提测分支分别进行测试,通过持续集成重置测试环境,避免由开发深度介入。
[4] 团队其他成员 code review 后必须留下评论,审核完毕后由 owner 进行合并操作。
[5] 生产部署上线基本自动化,关键的最终确认由开发承担。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注