当前位置: 首页 > news >正文

Git多版本并行开发实践

 本文目的:

实现多个项目同时进行的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分支代替其作用;

相关文章:

Git多版本并行开发实践

本文目的: 实现多个项目同时进行的git多版本管理工作流。 名词解释: feature-XXXX:特性分支指CCS中一个项目或者一个迭代,在该分支上开发,完成后,合并,最后,删除该分支,…...

修复hive重命名分区后新分区为0的问题

hive分区重命名后,新的分区的分区大小为0 , 例如 alter table entersv.ods_t_test partition(dt2022-11-08) rename to partition(dt2022-11-21) ods_t_test 的2022-11-21分区大小为0。怎样修复 使用 msck repair table 命令来修复表的元数据,让hive重新…...

Gin+微服务实现抖音视频上传到七牛云

文章目录 安装获取凭证Gin处理微服务处理 如果你对Gin和微服务有一定了解,看本文较容易。 安装 执行命令: go get github.com/qiniu/go-sdk/v7获取凭证 Go SDK 的所有的功能,都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的A…...

go 连接操作MySQL

连接Mysql 访问此网站搜索MySQL第一个就是按照指引运行 go get -u github.com\go-sql-driver\mysql导入包建立连接 package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql" )var db *sql.DBfunc initdb…...

git常见的命令,问题和处理方式

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方…...

Ubuntu环境下超好用的文件对比工具软件meld

Ubuntu环境下超好用的文件对比工具软件_ubuntu 代码比较工具_Calculation K的博客-CSDN博客...

Channel是什么?FileChannel类的常用方法

Channel 是一个接口对象,它类似于传统的流对象,但与传统的流对象又有些不同,具体表现如下: • Channel可以异步地执行I/O读写操作。 • Channel的读写操作是双向的,既可以从 Channel中读取数据,又可以写数据到Channel,而流的读写操作通常都是单向的。 • Channel…...

Python爬虫——scrapy_读书网数据入库和链接跟进

数据入库 先创建一个数据库 create table book(id int primary key auto_increment,name varchar(128),src varchar(128));settings.py DB_HOST 169.254.38.183 # 端口号是一个整数 DB_PORT 3306 DB_USER root DB_PASSWORD 123456 # 数据库名称 DB_NAME spider01 DB_CHA…...

前端常用linux命令

前端开发也需要掌握一些常用的linux命令,以便在linux系统上做一些操作如nginx代理配置,项目解压发布等 1、cd 切换目录 cd / //切换到根目录 cd directory_path //切换到directory_path目录 cd ../ //切换到上一级目录2、ls 列出目录内容 ls3…...

制作高质量SVG的最佳工具,这些编辑软件你需要知道!

作为前端开发者,想要学习更高级的可视化技术,SVG 编辑工具是必学的。与其他图像格式相比,SVG 图像可任意缩放而不损失质量,还可以实现交互动画效果,一个好的 SVG 编辑器能大大简化你的学习过程。下面就跟随小编一起看看…...

四、MySQL性能优化

1、SQL性能优化 1、如何分析SQL的性能? 我们可以使用EXPLAIN命令来分析SQL的执行计划 ,执行计划是指一条SQL语句在经过MySQL查询优化器的选择后具体的执行方式 EXPLAIN并不会真的去执行相关的语句,而是通过查询优化器 对语句进行分析&…...

Oracle Database12c数据库官网下载和安装教程

文章目录 下载安装Oracle自带的客户端工具使用 下载 进入oracle官网 点击下载连接之后右上角会有一个下载 我们只需要数据库本体就够了 运行这个下载器 等待下好之后即可 出现 Complete 之后代表下载成功,然后我们解压即可 安装 双击 双击setup.exe 根据…...

spring依赖注入详解(下)

Autowired注解依赖注入过程 一、findAutowireCandidates()实现 找出BeanFactory中类型为type的所有的Bean的名字,注意是名字,而不是Bean对象,因为我们可以根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象把re…...

python的dataframe常用处理方法

import pandas as pdclass DataFrameProcessor:staticmethoddef sort_by_column(df, by_column, ascendingTrue):"""根据指定列对DataFrame进行排序。Parameters:df (pd.DataFrame): 要排序的DataFrame。by_column (str): 要排序的列名。ascending (bool): True…...

k8s 自身原理之高可用

说到高可用,咱们在使用主机环境的时候(非 k8s),咱做高可用有使用过这样的方式: 服务器做主备部署,当主节点和备节点同时存活的时候,只有主节点对外提供服务,备节点就等着主节点挂了…...

游乐场vr设备虚拟游乐园vr项目沉浸体验馆

在景区建设一个VR游乐场项目可以为游客提供一种新颖、刺激和沉浸式的游乐体验。提高游客的体验类型,以及景区的类目,从而可以吸引更多的人来体验。 1、市场调研:在决定建设VR游乐场项目之前,需要进行市场调研,了解当地…...

window10安装并使用oracle

1、现在oracle19c或者21c,下载链接如下 Database Software Downloads | Oracle 中国 2、安装好之后, 2.1PL/SQL连接方式 命令窗口输入sqlplus conn as sysdba 2.2DBeaver连接 输入IP、 端口默认1521 数据库默认是ORCL 用户名是system 角色是N…...

[Mac软件]AutoCAD 2024 for Mac(cad2024) v2024.3.61.182中文版支持M1/M2/intel

下载地址:前往黑果魏叔官网 AutoCAD是一款计算机辅助设计(CAD)软件,目前已经成为全球最受欢迎的CAD软件之一。它可以在二维和三维空间中创建精确的技术绘图,并且可以应用于各种行业,如建筑、土木工程、机械…...

Oracle 主从库目录不一致(异路径)的n种处理方案及效果

最近遇到了复制数据(DUPLICATE TARGET DATABASE TO xxx)的时候 Oracle 源和目标库目录不一致的问题,比较初级但也踩到一些坑,整理记录一下。主从库搭建的时候注意事项其实也类似,而且更通用,所以标题写的是…...

创建型(一) - 简单工厂模式、工厂方法模式和抽象工厂模式

本文使用了王争老师设计模式课程中的例子,写的很清晰,而且中间穿插了代码优化。 由于设计模式就是解决问题的一种思路,所以每个设计模式会从问题出发,这样比较好理解设计模式出现的意义。 一、简单工厂模式 解决问题&#xff1a…...

LeetCode3.无重复字符的最长子串

虽然是一道中等题,但我5分钟就写完了,而且是看完题就知道怎么写,这一看就知道双指针,一个左一个右,右指针往后移如果没有重复的长度1;如果有重复的,左指针往右移,那如何判断重复呢&a…...

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏...

如何发布自己的小程序

小程序的基础内容组件 text&#xff1a; 文本支持长按选中的效果 <text selectable>151535313511</text> rich-text: 把HTML字符串渲染为对应的UI <rich-text nodes"<h1 stylecolor:red;>123</h1>"></rich-text> 小程序的…...

【微服务】spring 条件注解从使用到源码分析详解

目录 一、前言 二、spring 条件注解概述 2.1 条件注解Conditional介绍 2.2 Conditional扩展注解 2.2.1 Conditional扩展注解汇总 三、spring 条件注解案例演示 3.1 ConditionalOnBean 3.2 ConditionalOnMissingBean 3.2.1 使用在类上 3.2.2 使用场景补充 3.3 Condit…...

客户案例:高性能、大规模、高可靠的AIGC承载网络

客户是一家AIGC领域的公司&#xff0c;他们通过构建一套完整的内容生产系统&#xff0c;革新内容创作过程&#xff0c;让用户以更低成本完成内容创作。 客户网络需求汇总 RoCE的计算网络RoCE存储网络1.不少于600端口200G以太网接入端口&#xff0c;未来可扩容至至少1280端口1.…...

Flutter性能揭秘之RepaintBoundary

作者&#xff1a;xuyisheng Flutter会在屏幕上绘制Widget。如果一个Widget的内容需要更新&#xff0c;那就只能重绘了。尽管如此&#xff0c;Flutter同样会重新绘制一些Widget&#xff0c;而这些Widget的内容仍有部分未被改变。这可能会影响应用程序的执行性能&#xff0c;有时…...

29.Netty源码之服务端启动:创建EventLoopSelector流程

highlight: arduino-light 源码篇&#xff1a;从 Linux 出发深入剖析服务端启动流程 通过前几章课程的学习&#xff0c;我们已经对 Netty 的技术思想和基本原理有了初步的认识&#xff0c;从今天这节课开始我们将正式进入 Netty 核心源码学习的课程。希望能够通过源码解析的方式…...

Kotllin实现ArrayList的基本功能

前言 上次面试时&#xff0c;手写ArrayList竟然翻车&#xff0c;忘了里面的扩容与缩容的条件&#xff0c;再次实现一次&#xff0c;加深印象 源码讲了什么 实现了List列表和RandomAccess随机访问接口List具有增删改查功能&#xff0c;RandomAccess支持下标访问内部是一个扩容…...

C++的初步介绍,以及C++与C的区别

C和C的区别 C又称C plus plus&#xff0c;且C语言是对C语言的扩充&#xff0c;几乎支持所有的C语言语法&#xff1b;C语言&#xff1a;面向过程的语言&#xff08;注重问题的解决方法和算法&#xff09;C&#xff1a;面向对象的语言 &#xff08;求解的方法&#xff09;面向对…...

JDK 核心jar之 rt.jar

一、JDK目录展示 二、rt.jar 简介 2.1.JAR释义 在软件领域&#xff0c;JAR文件&#xff08;Java归档&#xff0c;英语&#xff1a;Java Archive&#xff09;是一种软件包文件格式&#xff0c;通常用于聚合大量的Java类文件、相关的元数据和资源&#xff08;文本、图片等&…...

网站建设整体策划/网络怎么做推广

之前我们介绍的cookie是把用户的身份信息存在了客户端&#xff0c;而session说白了就是把用户的信息保存在了服务端。由于session是保存在了服务端&#xff0c;所以当用户关闭浏览器时session并不会消失。一般session保存在服务器的内存中当然也可以持久化到硬盘或者数据库中。…...

专做logo网站叫什么地方/网站描述和关键词怎么写

在物联网时代&#xff0c;计算机和移动电话已经成为必需品。人们使用计算机和各种电子产品进行办公和学习等操作&#xff0c;有着个人隐私在其中&#xff0c;因此一个人拥有多种密码。如果您在计算机上设置了密码&#xff0c;但却忘记了怎么办。下面说说3种解决方法。如果需要系…...

内网网站建设/中国十大网络销售公司

1. 联合概率密度函数 2. 概率密度的性质 3. 二元连续型随机变量概率分布函数求解示例...

湘潭县建设投资有限公司网站/seo搜索引擎优化介绍

╮(╯▽╰)╭&#xff0c;又是一年惆怅时。 周围同事也下班啦&#xff0c;一个个的说“来年见”&#xff1b;办公司就剩下我自己&#xff0c;在博客园记录这一年的点点滴滴。 这一年&#xff0c;感觉挺失败的。 年初的时候&#xff0c;24年里&#xff0c;唯一的一次恋爱也早早流…...

如何做酒店网站设计/图床外链生成工具

1.前言 在自然语言处理领域&#xff0c;近几年最火的是什么&#xff1f;是BERT&#xff01;谷歌团队2018提出的用于生成词向量的BERT算法在NLP的11项任务中取得了非常出色的效果&#xff0c;堪称2018年深度学习领域最振奋人心的消息。而BERT算法又是基于Transformer&#xff0…...

甘肃住房和城乡建设局网站/百度百科推广费用

原地址&#xff1a;http://blog.csdn.net/u012085988/article/details/17531005 资源下载&#xff1a;http://download.csdn.net/detail/u012085988/6770625 &#xff08;最近csdn貌似出了问题&#xff0c;超链接不能用了&#xff0c;博客写好发布后发现被截短了&#xff0c;这…...