首页 > 其他分享 >版本控制的分支策略及初步实践

版本控制的分支策略及初步实践

时间:2023-04-10 15:03:41浏览次数:55  
标签:主干 版本控制 策略 合并 实践 发布 测试 分支


这几天在网上查询了一些资料,了解到比较常见的版本控制分支策略有三种:不稳定主干策略、稳定主干策略、敏捷发布策略。

下面是对这几种策略的摘录:

不稳定主干策略

版本控制的分支策略及初步实践_分支合并

使用用主干作为新功能开发主线,分支用作发布。

被广泛的应用于开源项目。

比较适合诸如传统软件产品的开发模式,比如微软的office等。

bug修改需要在各个分支中合并。

新代码在主干上开发,因此如果主干不能达到稳定的标准,就不可以进行发布。

这种策略的好处是没有分支合并的工作量,因此比较简单。

稳定主干策略

版本控制的分支策略及初步实践_敏捷开发_02

使用主干作为稳定版的发布。

bug的修改和新功能的增加,全部在分支上进行。

不同的修改或新功能开发以分支隔离。

分支上的开发和测试完毕以后才合并到主干。

主干上的每一次发布都做一个标签而不是分支。

每次发布的内容调整起来比较容易。

缺点是分支合并所增加的成本。

敏捷发布策略

版本控制的分支策略及初步实践_敏捷开发_03

敏捷开发模式的项目中广泛采用,敏捷开发的项目具有固定的发布周期。

为每个task建立分支。

为每个发布建立分支,每个周期内的task分支需要合并到发布分支发布。

在完成发布后,发布分支的功能合并到主干和尚在进行的任务分支中。

一种稳定主干策略的变体。

团队成员要求较高。

团队当前情况

负责互联网产品的开发,发布更新较为频繁。

有固定的发布周期,同时也存在比较多的hotfix。

修改任务通常比较小,改动范围通常不大,时间通常较短。

不同的功能页面有不同的小组负责,耦合度相对较低。

团队目前没有采用分支策略,开发人员协商进行增量更新,出现错误的几率较高。

已使用微软TFS做为版本控制工具,可以更充分的挖掘使用TFS的分支功能。

我的初步实践

参考上述策略,结合当前团队的现状,我初步设计了下面的版本控制解决方案。

版本控制的分支策略及初步实践_分支合并_04

此方案已稳定主干策略为主结合了一些敏捷发布策略的思路,具体实施方案如下:

1、主干时刻处于稳定状态,随时可以发布。设专门人员对主干代码进行管理,普通开发人员只读。

2、为开发任务建立开发分支。常规的可以以小组为单位建立分支,较大的任务可以建立专门的分支。

3、在发布日,从主干复制一个测试分支,需要在本发布日发布的各开发分支向此测试分支合并。

4、对测试分支代码进行测试,出现bug在测试分支上更改,无误后发布。

5、测试分支代码发布后,合并入主干,并在主干上进行标记。

6、对紧急修复(Hotfix)的情况,可以从主干复制出测试分支,在测试分支上进行紧急修改,并在测试后发布,发布后同样将代码合并会主干,做标记。

7、 Hotfix仅限于可以很快解决的小问题,如果更改时间过长,则需采用常规方法完成。

8、如果在测试分支测试过程中需要hotfix工作,则在复制一个新的测试分支进行hotfix,测试后发布。然后同时合并入原测试分支和主干,并在主干上做标记。此过程未在上图中画出。

9、测试分支发布后,开发分支可以删除;测试分支合并入主干后,测试分支可以定期删除。

方案的优缺点

方案优点

1、解决了没有实施分支策略时,代码不能经常签入的问题。

2、主干代码始终处于稳定的状态随时可以发布,降低了风险。

3、可以基于一个完整的测试分支进行测试及发布,而不是以口口相传的方式增量更新。

方案缺点

1、建立分支、合并分支增加了工作量。考虑实际情况,以及版本控制工具的辅助,增加的工作量应该可以接受。

2、如果某些开发分支工期跨越多个发布周期,修改过于剧烈,合并分支时可能工作量较大。可以考虑分解任务,避免过大的任务出现。

3、在同一时间最好只有一个测试分支,因此建立测试分支的权限需要限制,除hotfix场景外应当避免。

参考资料

互联网敏捷开发配置管理策略思考——http://daquan198163.iteye.com/blog/1481010

淘宝网最佳实践之ABS自动编译——http://www.programmer.com.cn/3223/

一个成功的Git分支模型——http://fuliang.iteye.com/blog/1181671

Visual Studio TFS 分支和合并指南——http://msdn.microsoft.com/zh-cn/magazine/gg598921.aspx


标签:主干,版本控制,策略,合并,实践,发布,测试,分支
From: https://blog.51cto.com/u_130277/6180911

相关文章

  • SonarQube(CE)版集群环境下的高可用性实践
    摘要:本文将详细介绍SonarQube的落地场景,集群环境(CE)下的高可用性(HA)最佳实践,包括部署策略、负载均衡、数据同步等方面的内容,以帮助您更好地构建一个健壮、高性能的代码质量分析系统一、为什么是SonarQubeSonarQube是一个广泛使用的开源的代码质量分析工具,它可以帮助开发团队发现和......
  • 项目的GIT分支管理
    概览一个项目涉及到多个模块多个团队进行开发时,则需要将git分支进行规范化管理这种模式下,主要维护两类分支:主要分支masterdevelop辅助分支featruebranch(功能分支)hotfixesbranch(热修复分支)master代码库中有且只有一个主分支,master分支的代码是最稳定的,可以随......
  • 数据分析第十二章实践
    #代码12-1评论去重的代码importpandasaspdimportreimportjieba.possegaspsgimportnumpyasnp#去重,去除完全重复的数据reviews=pd.read_csv("C:/Users/Lenore/Desktop/data/reviews.csv")reviews=reviews[['content','content_type']].d......
  • Drone+.Net 6 实践
    1.[.drone.yml]kind:pipelinetype:dockername:deploymentplatform:os:linuxarch:amd64steps:-name:buildimage:mcr.microsoft.com/dotnet/sdk:6.0volumes:-name:dotnet-buildpath:/mnt/dotnet/appcommands:......
  • 推荐算法在商城系统实践
    一、简介本文博主给大家讲解如何在自己开源的电商项目newbee-mall-pro中应用协同过滤算法来达到给用户更好的购物体验效果。newbee-mall-pro项目地址:源码地址:https://github.com/wayn111/newbee-mall-pro在线地址:http://121.4.124.33/newbeemall二、协同过滤算法协同过......
  • 【转】git 合并某个分支上某次commit记录到另外一个分支
     转,原文:https://www.cnblogs.com/wjxbk/p/15469212.html------------------------------ git合并某个分支上某次commit记录到另外一个分支 需求:需要将A分支的某次提交记录,合并到B分支 解决步骤:1)gitcheckoutA分支找到提交的commitid可以使用gitlog命令......
  • 若依管理系统前端实践
    若依管理系统是一套基于若依框架开发的后台管理系统,它是一个前后端分离的项目,前端使用vue,Element,后端使用SpringBoot&Security。这篇随笔中将记录一下自己在使用过程中前端使用上的一些收获和问题。目录1.路由控制1.1简述1.2token的检验1.3获取角色权限1.4生......
  • Python 进阶指南(编程轻松进阶):十四、实践项目
    原文:http://inventwithpython.com/beyond/chapter14.html到目前为止,这本书已经教会了你编写可读的Python风格代码的技巧。让我们通过查看两个命令行游戏的源代码来实践这些技术:汉诺塔和四人一排。这些项目很短,并且基于文本,以保持它们的范围较小,但是它们展示了本书到目前为......
  • GitHub默认分支问题
    github将默认分支由master改为main我们在push主分支时容易出现错误可以在仓库的setting中找到Branches在Defaultbranch中将默认分支改为master ......
  • 【web 开发基础】PHP 的流程控制之嵌套(巢状)条件分支结构 -PHP 快速入门 (15)
    嵌套条件分支结构嵌套条件分支结构,也称为巢状条件分支结构。其实就是将if语句进行嵌套,即是在if或者else后面的语句块中又包含if语句。if语句可以无限层第嵌套在其他if语句中,这给程序的不同部分的条件执行提供了充分的弹性,是程序设计中经常使用的技术。其语法格式如下所示:if(表达式1......