Git多版本并行开发实践

news2024/11/24 14:52:37

 本文目的:

实现多个项目同时进行的git多版本管理工作流。

    名词解释:

         feature-XXXX:特性分支指CCS中一个项目或者一个迭代,在该分支上开发,完成后,合并,最后,删除该分支,开发人员(xxxx可以自己根据该分支)

         develop :开发分支,开发环境基于该分支构建,开发人员关注该分支,一个大融合分支,该分支体现了此时进行的所有项目的特性功能。

         test(release):测试分支,测试环境基于该分支构建,测试人员关注该分支,该分支包含即将上线的特性功能。
         
         hotfix:为了修复某个bug,从master分支上面分出来的。修复完成后,再merge到master分支以及其他分支

        master:生产环境稳定分支,生产环境基于该分支构建

目前现状:

git.png

3、产生问题:

   从上图可以看出 当前分支管理无法实现 多版本并行开发,是一个串行的工作流方式。

  1、当某个迭代在develop分支完成生命周期即封板后,此时代码进行到test分支,发现代码有bug

       目前所见做法有 部分开发者直接在test分支修改代码,develop分支不修改,等到上线后master反合;部分开发者在test修改后,develop同时改掉。

  2、同时有 A、 B  2个迭代, A迭代计划先上线,B迭代计划在A后面上线,只能A迭代生命周期进行到test才能释放出develop分支给B迭代使用。

  3、同时有 A、 B  2个迭代, A迭代计划先上线,B迭代计划在A后面上线,突然接到通知B需要在A前面上线,此时A占据着测试环境,需要增加很大工作量回退代码。

上述问题大大影响了开发效率,测试效率,也会产生代码丢失的风险等。

解决方案

 解决方案-工作流图:

        

git多版本.png

流程图解释:

  1、场景

    项目同时并行 :1、迭代33 ; 2、迭代22开发 这2个项目;

 2准备

    从master拉出2个分支 feature-迭代33  2、feature-迭代22。

3开发自测联调阶段(feature->develop)

   3.1、  负责这2个项目的开发人员在各自这2个分支上开发。
   
   3.2、开发完成,想到环境上验证自己开发东西是否ok或者和前端进行联调。可以将各自分支上的代码merge到develop分支,此时以develop分支部署开发环境,就具有了这2个项目的所有特性;
   
   3.3、如果开发环境验证时发现存在bug,此时修改代码请在各自的feature分支上修改,修改完成再将自己的分支代码merge到develop环境,部署一下验证。

4、提测阶段(feature->test(release分支))

 4.1、到此阶段前后端已经联调完毕,自测Ok需要发起测试验证即提测,此时迭代22开发在迭代33前上线,保险起见将master分支反合到该特性分支(feature-迭代22)以及test分支,
再将test分支代  码反合到feature-迭代22分支(这么做减少冲突)最后将feature分支merge到test分支,部署test分支提测。

 4.2测试过程中发现bug,在各自分支修改,修改后合并到test分支,再部署验证,别忘了也merge到develop分支。验证 ok,选取时间点上线。

5、上线阶段(test(release)->master)

可以拿test(release)分支上线,记住上完线要反合master分支,打tag

说明:在第4步中,应该有一个release分支,但是因为环境不支持等原因,以固定的test分支代替其作用;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/893093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 动态数据统计图】动态数据统计思路案例(动态,排序)一(112)

需求&#xff1a;&#xff1a; 有一个List<Map<String.Object>>,存储了某年某月的数据&#xff0c; 数据是根据用户查询条件进行显示的&#xff1b;所以查询的数据是动态的&#xff1b;需按月份统计每个年月数据出现的次数&#xff0c;并且按照月份排序&#xff1…

corosync+pacemaker+nfs配置简单高可用

环境准备&#xff1a; 每个节点提供20G共享存储 web1192.168.134.176node7web2192.168.134.177node8 一、准备web环境&#xff08;两台web测试机都要准备&#xff09; yum install httpd -y echo " web test page ,ip is hostname -I." > /var/www/html/index…

无法将“环境变量”项识别为 cmdlet、函数、脚本文件或可运行程序的名称(pycharm)

无法将“配置的任何一个环境变量”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 记录解决“无法将“C:......conda.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称”以及“表达式或语句中包含意外的标记”的系列问题(VSCode开发环境)一、Conda.exe无法正常识…

【AI】《动手学-深度学习-PyTorch版》笔记(十八):卷积神经网络模型(LeNet、AlexNet、VGG、NiN)

AI学习目录汇总 1、LeNet 1.1 介绍 发布时间:1989年 模型目的:识别手写数字 1.2 网络结构 1.3 定义模型 1.3.1 相关函数原型 1)nn.Conv2d:卷积层 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, paddin

面试之快速学习STL-无序关联式容器

和关联式容器一样&#xff0c;无序容器也使用键值对&#xff08;pair 类型&#xff09;的方式存储数据。不过&#xff0c;本教程将二者分开进行讲解&#xff0c;因为它们有本质上的不同&#xff1a; 关联式容器的底层实现采用的树存储结构&#xff0c;更确切的说是红黑树结构&a…

2023-08-17 Untiy进阶 C#知识补充8——C#中的日期与时间

文章目录 一、名词概念二、DateTime三、TimeSpan 一、名词概念 &#xff08;一&#xff09;格里高利历 ​ 格里高利历一般指公元&#xff0c;即公历纪年法。目前我们所说公历&#xff0c;就是格里高利历。 ​ 比如 2022 年就是从公元元年开始算起的两千二十二年。 &#xf…

Python“牵手”shopee商品评论数据采集方法,shopeeAPI申请指南

Shopee平台API接口是为开发电商类应用程序而设计的一套完整的、跨浏览器、跨平台的接口规范&#xff0c;ShopeeAPI接口是指通过编程的方式&#xff0c;让开发者能够通过HTTP协议直接访问Shopee平台的数据&#xff0c;包括商品信息、店铺信息、物流信息等&#xff0c;从而实现Sh…

如何采用敏捷方法进行需求管理?

产品的复杂性正在迅速增长&#xff0c;因此&#xff0c;为满足客户目标所需的需求数量也在扩大。这使得需求文档编制过程既耗时又可能存在风险。在本章中&#xff0c;我们将探讨如何采用敏捷方法进行需求管理。 现有的需求管理方法总是不够灵活&#xff0c;无法满足严格要求以…

薛定谔的日语学习小程序源码下载

这款学习日语的小程序源码&#xff0c;名为“薛定谔的日语”&#xff0c;首页展示了日语中的50音图&#xff0c;让用户能够看到日语词并跟读发音。 在掌握50音图后&#xff0c;用户还可以进行练习。小程序会随机提问50音图中的某一个&#xff0c;用户需要回答是否正确&#xf…

【nodejs】用Node.js实现简单的壁纸网站爬虫

1. 简介 在这个博客中&#xff0c;我们将学习如何使用Node.js编写一个简单的爬虫来从壁纸网站获取图片并将其下载到本地。我们将使用Axios和Cheerio库来处理HTTP请求和HTML解析。 2. 设置项目 首先&#xff0c;确保你已经安装了Node.js环境。然后&#xff0c;我们将创建一个…

下载安装并使用小乌龟TortoiseGit

1、下载TortoiseGit安装包 官网&#xff1a;Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 2、小乌龟汉化包 在官网的下面就有官方提供的下载包 3、安装

vue项目引入antDesignUI组件

快速安装ant-design-vue并配置&#xff0c;vue2.0 antDesign1.7.8 第一步&#xff1a;安装ant-deisgn-vue 1.7.8 npm install ant-design-vue1.7.8 --save第二步&#xff1a;配置package.json文件&#xff0c;将依赖写入后&#xff0c;npm install 安装依赖 "dependenc…

极智嘉x吉利汽车 x京东物流,引领汽车行业智慧物流新变革!

近日&#xff0c;中国领先的汽车制造商吉利汽车携手中国领先的技术驱动的供应链解决方案及物流服务商京东物流、全球仓储机器人引领者极智嘉(Geek)&#xff0c;在西安吉利汽车制造基地RDC仓库率先落地SkyPick上存下拣解决方案&#xff0c;实现了全物流链精益化、智能化、一体化…

音视频实时通话解决方案

1、问题提出 想要实现音视频通话,对于大部分人可能会觉得很难,但是实际上,有些事情并没有大家想的那样困难,只要功夫深,铁杵磨成针。 机缘巧合下,在业务中,我也遇到了一个业务场景需要实现音视频通话,我们不可能自己从零开始干,我本次用到的核心是WebRTC。 2、WebRT…

数学建模之“聚类分析”原理详解

一、聚类分析的概念 1、聚类分析&#xff08;又称群分析&#xff09;是研究样品&#xff08;或指标&#xff09;分类问题的一种多元统计法。 2、主要方法&#xff1a;系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。这里主要介绍系统聚类法…

mmdetection-FasterRcnn的四层输出修改

1、 num_outs5 改为 num_outs4 2、 FPN的输出改为四层 outs [H3, H4, H5, H6] 3、strides删除一个&#xff1a;strides[4, 8, 16, 32]), 就可以了

【LeetCode】字符串匹配

字符串匹配问题 常见的字符串匹配算法包括暴力匹配、 Knuth-Morris-Pratt 算法、Boyer-Moore算法、Sunday 算法等 解题 思路 1: 两个指针各指向两个字符串的起始位置,先判断,两个字符串的第一个字符是否相同,如果相同的话,则将两个指针往下移动,并且判断较短字符串的下一个字符…

上海虚拟展厅制作平台怎么选,蛙色3DVR 助力行业发展

引言&#xff1a; 在数字化时代&#xff0c;虚拟展厅成为了企业宣传的重要手段。而作为一家位于上海的实力平台&#xff0c;上海蛙色3DVR凭借其卓越的功能和创新的技术&#xff0c;成为了企业展示和宣传的首选。 一、虚拟展厅的优势 虚拟展厅的崛起是指随着科技的进步&#x…

sass笔记

声明变量 通过$标识符进行命名及引用混合器 类似vue中的函数 通过 mixin标识定义 include 标识调用& 父选择器标识extend 进行继承可嵌套可导入 通过 import 文件位置’ 、进行导入 <style> //1 声明变量 $name: 15px; $color: skyblue;mixin border-radius($num) {/…

Linux配置Nginx SSL支持Https配置教程

Linux Nginx配置SSL 检查是否安装ssl模块安装SSL配置SSL证书 继承上篇 Linux安装Nginx 检查是否安装ssl模块 执行&#xff1a;./nginx -V命令 如果有输出--–with-http_ssl_module则说明已安装好SSL模块 安装SSL 进入安装目录/usr/local/nginx-1.22.1 执行安装命令&#xf…