赞
踩
文章内容以我自己实际负责的项目前端代码的管理为例,每个公司的git工作流设计应以公司的实际为准,该分享仅做参考。
采用基于qiankun的前端微应用(基座应用+业务模块应用)架构设计。项目所管理的供应商
达4000+,用户人数
达200000+,每天同时在线用户数
基本维持在4000至6000,整体来说可以算是一个非常庞大的To B项目了。
└─web # 项目文件夹
├─portal # 基座应用,实现项目UI的主体框架、登录等功能(也可以认为这是一个业务模块)
├─system # 系统管理业务模块
├─contract # 合同管理业务模块
├─……
└─package.json # 全局自动化脚本命令,例如:安装依赖、升级依赖、启动多个项目、项目整体打包等等。
1、由于项目比较复杂,而且我们希望每个业务模块的代码作为独立为子模块进行版本控制;
2、项目开发团队分布于多地,每个业务模块都有独立负责人;
3、作为前端整体负责人,我只关心整个项目前端部分的代码管理、具体业务模块的管理应由对应的负责人管理。
4、每一个业务模块都是一个独立且完整的Vue项目。
为了保持跟上述项目目录结构一致,每个业务应用、基座应用都新建单独的git仓库,再新建一个web仓库(功能类似于项目文件夹),用于存储web目录下的package.json文件及其他文件,以及跟其他仓库的关联信息。
通过git submodule add <submodule_url>
将所有的业务模块仓库、基座应用仓库跟web仓库
关联起来。
通过git clone <web_url> --recurse-submodules
取代所有前端代码,<web_url>
为web仓库的地址。
每个仓库默认四个分支:
1、开发分支(develop)、
2、测试分支(test)、
3、预生产分支(staging)
4、生产分支(master)
主要用于开发环境代码管理,只有相关业务模块负责人拥有提交合并的权限。
1、在开发者完成一个完整的功能或者需求开发时,发起合并请求,由相关业务模块负责人在对代码进行质量检查之后合并进开发分支;
2、每次合并申请的代码必须是一个完整的功能或者需求;
主要供项目功能测试使用,只有相关业务模块负责人拥有提交合并的权限。
当一个业务模块或者独立需求完成开发之后,由相关业务模块负责人提出测试申请,在请求通过之后由该负责人从开发分支同步代码至测试分支。
主要用于预生产测试,只有相关业务模块负责人拥有提交合并的权限。
测试人员在测试分支测试完一个业务模块或者独立需求后,认为具备预生产发版条件之后,由相关业务模块负责人从测试分支同步代码至预生产分支。
主要用于生产版本代码留存及线上紧急bug修复,只有相关业务模块负责人拥有提交合并的权限。
根据需求交底会议确定发版时机及发版内容,发布之后必须及时新建tag(命名规范: v.1.0.1、v.1.0.2……)保留备份,方便版本回滚。
线上bug修复以生产分支为基础,新建bug分支(命名规则:hotfix-禅道bug号),bug修复之后代码应由相关业务模块负责人同步至预生产分支,由测试人员在预生产环境进行回归测试,如过bug得到解决则由相关业务模块负责人同步代码至生产及其他分支,并删除该远程分支记录。
在整个git工作流的设计中,主要有项目负责人
,业务模块负责人
及开发者
三种角色。
1、开发人员必须在远程仓库新建个人分支(命名规则:个人姓名全拼);
2、远程个人分支代码管理提交不做任何要求;
3、开发分支(develop)代码提交合并应是一个完整的功能或者需求(可将本地多次提交记录合并之后再提交至开发分支)。
业务模块负责人为整个git工作流程的核心人员。
1、负责代码的合并及质量检查工作;
2、在处理开发分支的代码合并申请时,需对代码质量把控负责。代码质量检查主要分为:代码规范,代码明显的逻辑错误检查……
3、当开发满足对应分支节点的要求时,应及时同步代码(测试分支同步,预生产同步,生产同步);
4、远程仓库个人分支的管理。
1、web仓库各分支信息的同步工作(自动化发版流程依赖于各分支package.json
文件中的全局自动化脚本命令);
2、各个业务模块的依赖管理(保证各业务模块依赖的一致性);
1、可通过命令:git clone <web_url> --recurse-submodules
直接克隆所有业务模块代码。
2、先通过git clone <web_url>
命令克隆web仓库,然后通过cd web
进入到clone好的web仓库目录,再通过git submodule init
初始化关联仓库,最后通过git submodule update
更新子仓库代码。
1、新建本地分支:git checkout -b lizhijie
新建本地分支之后可以通过 git push origin lizhijie
将本地分支代码同步至远程并新建 lizhijie 分支。
2、删除远程分支:需先切换至其他分支,然后通过 git push origin –delete lizhijie
就可以删除远程仓库lizhijie分支。
注:此操作只是删除了远程仓库分支,并没有删除本地仓库分支。
可使用git rebase -i HEAD~2
命令合并两条提交记录,完成本地代码提交记录合并之后可通过 git push -f origin lizhijie
强制推送至远程仓库的个人分支,完成远程仓库代码提交记录的合并。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。