分支需求管理方式

news2024/11/17 10:56:02

此文为上一篇文章的后续
我们来回顾一下,现在,你的小组负责的系统,有主干分支,每次新的需求,你都从主干(formal)拉取分支(dev-日期-需求名)进行修改,自测通过后,合并至测试分支(test)进行提测,测试通过后,再合并至正式分支等待发布,每次发布时,拉取最新部署分支(formal-2.x-0)进行部署,如果需要在已部署分支进行修改,将此需求合并至对应分支,再修改版本进行发布
随着签约的客户越来越多,提出的需求越来越多,导致开发分支越来越多,是时候删除一部分历史的开发分支了,但是删除这部分分支,意味着这些需求再往历史部署版本进行合并将比较复杂,哪些可以删除,哪些暂时还不好删除,很难判断,此时你不得不引进一个维护版本系统来记录你拉取了哪些分支,以及这些分支已经合并到哪些版本里了
领导找到你了,觉得你负责的系统做得很好,所以这个需求维护系统由你负责开发,并由你们的系统进行试用。
你做了初步的设计:
每个需求尽量拆解,拆解后的需求分别进行维护,使用一条需求记录表(demand)进行记录,表中除了需要有需求简述,需求描述,创建时间,完成时间,开发人员,开发状态等字段外,合并至主干时版本,合并其他版本版本号
维护客户表(client),维护客户部署系统表(client_system),表中有客户ID,部署系统,系统版本号
维护版本表(version),表中维护版本ID,发版时间,版本分类(主干版本,分支版本)
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

做好如下约定,主干版本为formal-2.x.0,x自增,分支进行迭代时,在原版本基础上,只修改最后一位,如:formal-2.10.2改为formal-2.10.3(可能为4),防止维护版本较多,处于相同版本下的多个客户,如果此时D客户版本为formal-2.10.3,而此时最新分支版本为formal-2.10.5,此时如果升级,要么升级为formal-2.10.6.要么升级成最新的主干版本formal-2.x.0。特殊客户除外,拉取新分支,版本新增客户简称,如:formal-2.10.nzs,维护知道客户更新大版本为止
整体流程如下:
1、维护所有现有客户A\B\C\D\E\F\G…
2、在版本表中创建基准版本3.0.0(早于此版本的客户,分批更新至此版本或之后版本),并在之后每次发布时进行版本维护.;
3、客户E提出新需求a\b\c\d,需求记录表中插入对应记录,创建对应分支进行开发(可以进行联动,即需求录入后,只要开发评审通过,自动拉取开发)
4、测试通过后,修改需求表状态(待发布)
5、版本发布时(可以把版本发布和部署分支拉取自动化处理,自动拉取部署分支),选择待发布中的需求,进行版本发布,需求表状态自动修改为已发布,自动同步“合并至主干时版本”
6、如需发布分支版本,选择分支版本,选择需求,进行发布(此处也可以自动化,但是cherrtpick容易冲突,最好还是手动进行),需求新增“合并其他版本版本号”记录
7、定时判断,如果一个需求,在所有客户的版本里(不是所有版本,是客户的版本),都有,则进行标记,择机进行淘汰处理

以上操作,还有一些不足,比如:1、就算如此,还是会维护很多分支;2、开发分支合并至主干基本不会有问题,但是会出现,往旧部署分支合并时,异常,如:该分支基于其他分支开发,此分支没有合并至旧部署分支
建议:客户更新,尽量更新至最新版本;任何系统都不能脱离人存在,需要有对系统掌握度高,这个人,最好是你
最后,进行更新时,又出现一个问题,版本跨度太大,好多表都有调整,测试进行回归测试时,各种因为表结构问题导致的报错,如何修改

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

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

相关文章

【内推】新风口-大模型独角兽公司minimax

先上内推链接: MiniMax社招内推码: AK3XEJ6 投递链接: https://vrfi1sk8a0.jobs.feishu.cn/s/iFY5WFgE 岗位:前端、后端、算法,基础架构都有,大量hc 公司介绍: 国内同时拥有文本、语音、视觉三种基础大模型能力的创业…

不要在代码中随便使用try...catch了

前言 📫 大家好,我是南木元元,热爱技术和分享,欢迎大家交流,一起学习进步! 🍅 个人主页:南木元元 目录 背景 js中的try...catch try...catch运行机制 js的事件循环机制 try...c…

动态代理以及Retrofit的原理

代理模式) 首先什么是代理模式? 代理模式就是通过引入代理对象去帮助真实对象完成一些事情,防止直接访问目标对象给系统带来不必要的复杂性。 代理模式一般分为三个角色: 抽象角色: 指代理对象和真实对象对外提供的…

等保2.0 测评 linux服务器加固 基本安全配置手册

1.删除系统特殊的的用户帐号: 禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。 #为删除你系统上的用户,用下面的命令:…

Python中的并发编程:多线程与多进程的比较【第124篇—多线程与多进程的比较】

Python中的并发编程:多线程与多进程的比较 在Python编程领域中,处理并发任务是提高程序性能的关键之一。本文将探讨Python中两种常见的并发编程方式:多线程和多进程,并比较它们的优劣之处。通过代码实例和详细的解析,…

【C++庖丁解牛】STL之vector容器的介绍及使用 | vector迭代器的使用 | vector空间增长问题

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.1 vector的介绍2 v…

【数据结构:树与堆】向上/下调整算法和复杂度的分析、堆排序以及topk问题

文章目录 1.树的概念1.1树的相关概念1.2树的表示 2.二叉树2.1概念2.2特殊二叉树2.3二叉树的存储 3.堆3.1堆的插入(向上调整)3.2堆的删除(向下调整)3.3堆的创建3.3.1使用向上调整3.3.2使用向下调整3.3.3两种建堆方式的比较 3.4堆排…

基于Spring Boot+ Vue的房屋租赁系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

水电站泄洪闸预警系统技术改造项目方案

一、工期安排 2024年1月10日至1月30日,共20天,水电站泄洪闸预警系统建设项目主要以计划工作任务为依据开展并控制工期。 二、预警系统建设项目 水电站泄洪闸预警系统技术改造项目实施内容主要是在每个确定后的预警广播站点采用基础开挖预制地笼浇筑混凝…

【Python】一文详细介绍 plt.rcParamsDefault 在 Matplotlib 中的原理、作用、注意事项

【Python】一文详细介绍 plt.rcParamsDefault 在 Matplotlib 中的原理、作用、注意事项 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程…

GeoPy1.1 地理数据处理入门

原作者:Damon 高校教师,中科院 GIS 博士 本文为原文章基础上,加上自己以及GPT4.0的总结整理而来 原活动链接 目录 前言小练习:求一周的平均温度小练习:将文件夹下的文件路径都打印出来:小练习&#xff1a…

ManualResetEvent 在线程中的使用C#

ManualResetEvent 用于表示线程同步事件,可以使得线程等待信号发射之后才继续执行下一步,否则一直处于等待状态中。 ManualResetEvent 的常用方法 构造函数ManualResetEvent(bool); ManualResetEvent manualResetEvent new ManualResetEvent(false…

医疗健康机器人_血压血糖血氧中医AI远程医疗定制方案

为人们提供了更加便捷、全面的健康管理服务,开发一款智能医疗健康机器人产品,为用户提供了多项便捷的服务,包括多体征检测、在线问诊、预约挂号、在线购药、健康科普教育等。这些服务构成了从疾病咨询到问诊再到健康管理的闭环,使…

系统学习c++类和对象——深度理解默认成员函数

前言:类和对象是面向对象语言的重要概念。 c身为一门既面向过程,又面向对象的语言。 想要学习c, 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的讲解。 目录 类和对象的基本概念 封装 类域和类体 访问限定符…

ICLR 2024 | Meta AI提出ViT寄存器结构,巧妙消除大型ViT中的伪影以提高性能

论文题目:Vision Transformers Need Registers 论文链接:https://arxiv.org/abs/2309.16588 视觉Transformer(ViT)目前已替代CNN成为研究者们首选的视觉表示backbone,尤其是一些基于监督学习或自监督学习预训练的ViT&a…

前端实现生成图片并批量下载,下载成果物是zip包

简介 项目上有个需求,需要根据表单填写一些信息,来生成定制的二维码图片,并且支持批量下载二维码图片。 之前的实现方式是直接后端生成二维码图片,点击下载时后端直接返回一个zip包即可。但是项目经理说后端实现方式每次改个东西…

elasticsearch(学习笔记)(分布式搜索引擎)(黑马)(kibana操作)

一、索引库操作 索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 1、mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型…

树莓派安装Nginx服务搭建web网站结合内网穿透实现公网访问本地站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Ngi…

龙迅#LT8711UXE1 适用于Type-C/DP1.2/EDP转HDMI2.0方案,支持音频剥离和HDCP功能。

1. 描述 LT8711UXE1是一款高性能的 Type-C/DP1.2 转 HDMI2.0 转换器,设计用于将 USB Type-C 源或 DP1.2 源连接到 HDMI2.0 接收器。该LT8711UXE1集成了符合 DP1.2 标准的接收器和符合 HDMI2.0 标准的发射器。此外,还包括两个用于 CC 通信的 CC 控制器&a…

Python——读写属性

采用读写属性的目的就是把录入的数据控制在合理区间。 如:学生的年龄(age),学生的身高(height)... 方法一:利用实例方法来控制 class Student:def __init__(self,name"",age0):self.…