当前位置:   article > 正文

多团队协作开发的大型项目Git工作流设计分享_项目协作工作流

项目协作工作流

一、项目简介

文章内容以我自己实际负责的项目前端代码的管理为例,每个公司的git工作流设计应以公司的实际为准,该分享仅做参考。

1、项目架构设计:

采用基于qiankun的前端微应用(基座应用+业务模块应用)架构设计。项目所管理的供应商达4000+,用户人数达200000+,每天同时在线用户数基本维持在4000至6000,整体来说可以算是一个非常庞大的To B项目了。

2、项目目录结构:

└─web    # 项目文件夹
   ├─portal # 基座应用,实现项目UI的主体框架、登录等功能(也可以认为这是一个业务模块)
   ├─system # 系统管理业务模块
   ├─contract # 合同管理业务模块
   ├─…… 
   └─package.json # 全局自动化脚本命令,例如:安装依赖、升级依赖、启动多个项目、项目整体打包等等。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、项目实际情况:

1、由于项目比较复杂,而且我们希望每个业务模块的代码作为独立为子模块进行版本控制;

2、项目开发团队分布于多地,每个业务模块都有独立负责人;

3、作为前端整体负责人,我只关心整个项目前端部分的代码管理、具体业务模块的管理应由对应的负责人管理。

4、每一个业务模块都是一个独立且完整的Vue项目

二、git仓库设计

为了保持跟上述项目目录结构一致,每个业务应用、基座应用都新建单独的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、开发分支介绍:

主要用于开发环境代码管理,只有相关业务模块负责人拥有提交合并的权限。

1、在开发者完成一个完整的功能或者需求开发时,发起合并请求,由相关业务模块负责人在对代码进行质量检查之后合并进开发分支;

2、每次合并申请的代码必须是一个完整的功能或者需求;

2、测试分支介绍

主要供项目功能测试使用,只有相关业务模块负责人拥有提交合并的权限。

当一个业务模块或者独立需求完成开发之后,由相关业务模块负责人提出测试申请,在请求通过之后由该负责人从开发分支同步代码至测试分支。

3、预生产分支介绍

主要用于预生产测试,只有相关业务模块负责人拥有提交合并的权限。

测试人员在测试分支测试完一个业务模块或者独立需求后,认为具备预生产发版条件之后,由相关业务模块负责人从测试分支同步代码至预生产分支。

4、生产分支

主要用于生产版本代码留存及线上紧急bug修复,只有相关业务模块负责人拥有提交合并的权限。

根据需求交底会议确定发版时机及发版内容,发布之后必须及时新建tag(命名规范: v.1.0.1、v.1.0.2……)保留备份,方便版本回滚。

线上bug修复以生产分支为基础,新建bug分支(命名规则:hotfix-禅道bug号),bug修复之后代码应由相关业务模块负责人同步至预生产分支,由测试人员在预生产环境进行回归测试,如过bug得到解决则由相关业务模块负责人同步代码至生产及其他分支,并删除该远程分支记录。

三、角色介绍

在整个git工作流的设计中,主要有项目负责人业务模块负责人开发者三种角色。

1、开发人员:主要负责日常功能开发。

1、开发人员必须在远程仓库新建个人分支(命名规则:个人姓名全拼);

2、远程个人分支代码管理提交不做任何要求;

3、开发分支(develop)代码提交合并应是一个完整的功能或者需求(可将本地多次提交记录合并之后再提交至开发分支)。

2、业务模块负责人:主要该业务模块git仓库的管理。

业务模块负责人为整个git工作流程的核心人员。

1、负责代码的合并及质量检查工作;

2、在处理开发分支的代码合并申请时,需对代码质量把控负责。代码质量检查主要分为:代码规范,代码明显的逻辑错误检查……

3、当开发满足对应分支节点的要求时,应及时同步代码(测试分支同步,预生产同步,生产同步);

4、远程仓库个人分支的管理。

3、项目负责人:负责群组及各个仓库人员及权限管理。

1、web仓库各分支信息的同步工作(自动化发版流程依赖于各分支package.json文件中的全局自动化脚本命令);

2、各个业务模块的依赖管理(保证各业务模块依赖的一致性);

四、git常用操作

1.项目克隆

1、可通过命令:git clone <web_url> --recurse-submodules 直接克隆所有业务模块代码。

2、先通过git clone <web_url>命令克隆web仓库,然后通过cd web进入到clone好的web仓库目录,再通过git submodule init初始化关联仓库,最后通过git submodule update更新子仓库代码。

2.分支管理:

1、新建本地分支:git checkout -b lizhijie 新建本地分支之后可以通过 git push origin lizhijie将本地分支代码同步至远程并新建 lizhijie 分支。

2、删除远程分支:需先切换至其他分支,然后通过 git push origin –delete lizhijie 就可以删除远程仓库lizhijie分支。

注:此操作只是删除了远程仓库分支,并没有删除本地仓库分支。

3.本地代码提交记录合并

可使用git rebase -i HEAD~2 命令合并两条提交记录,完成本地代码提交记录合并之后可通过 git push -f origin lizhijie 强制推送至远程仓库的个人分支,完成远程仓库代码提交记录的合并。

往期内容:

一、半天时间掌握Dart开发语言-基础学习

二、半天时间掌握Dart开发语言-类的学习

三、【Flutter开发环境搭建】Java SDK安装

四、【Flutter开发环境搭建】Android SDK、Dart SDK及Flutter SDK安装_

五、Flutter路由传参

六、flutter全局状态管理Provider

七、Flutter自定义iconfont字体图标

八、Flutter网络请求Dio库的使用及封装

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/452292
推荐阅读
相关标签
  

闽ICP备14008679号