基于SVN分支开发模式流程浅析

  作者:zhanhailiang 日期:2014-10-23

在使用svn多人协作开发式一般采取的工作方式如下:

  1. 检出库
  2. 创建并维护开发分支
  3. 定期将主干代码合并回分支,保证数据完整性,避免最终合并回主干时出现冲突
  4. 分支测试
  5. 将分支合并回主干
  6. 主干提交、部署

多人协作时,第三步是最经常出问题的地方,严重的甚至会导致代码被覆盖回滚情况,其原因在于分支管理者创建分支后不再或长时间从主干拉回数据,导致最终合并回主干时分支的文件甚至结构都与主干有较大差别,产生较多冲突。需要人手解决,浪费了很多时间。

针对这个问题,是否有一种方案可以在分支提交时即检测该分支最后一次合并的版本是否与主干版本相符,如果不符则不允许提交,强制要求大家养成从主干拉数据的习惯呢?如果可以实现,那么在分支合并回主干时将几乎可以消灭掉冲突。

当前思路主要有3种:

1. 不间强调使用SVN时要经常从主干同步代码到分支。该方案缺点很明显,完全依赖人工,不可信。

2. 在trunk里单独维护一个带最新版本号的readme.md,每次更新trunk时更新该版本到更新的版本号。此后合并分支回主干时判断下分支时的readme.md是否和主干里的readme.md保持一致,若小于主干,则强制同步主干代码到分支。 该方案缺点是需要每次更新主干代码时都要强制手工维护版本号,容易出现低级错误——更新trunk时忘记更新readme.md里的版本号等情况。

3. SVN本身记录版本更新信息,可以通过在服务器端监控主干,判断提交前(pre-commit)检测是否有分支最后一次合并版本号小于主干版本号,如果小于则不允许提交,强制要求先从主干合并。此方案是一种相对完美的方案。

时间: 2024-10-11 06:51:44

基于SVN分支开发模式流程浅析的相关文章

SVN - 分支开发

参考博客: http://www.cnblogs.com/cxd4321/archive/2012/07/12/2588110.html (1)为什么要使用SVN分支开发和主干合并? 目的:在SVN下进行版本升级模式的开发 需求: 1.项目目前已经有比较稳定的版本(release_version_1.0),需要在稳定版本上面做程序的升级 2.升级开发时,可能有10个程序员同时在修改程序,且都需要对绝大多数文件做大部分改动 3.恶心的技术经理说:现在需要把数据库换成hbase,但是没有更改完毕之前

svn分支开发与主干合并(branch & merge)

下面我将step by step地演示如何一次完整的branching和merging,包括创建分支.分支开发.分支和主线同步,分支合并到主线的全过程,甚至包括如何在本地创建一个测试用的repository. 首先需要安装TortoiseSVN,我安装的版本是:TortoiseSVN 1.6.15, Build 21041 - 32 Bit , 2011/03/23 18:00:27 1.本地Repository的创建 repository的创建很简单,假设我要在D:\TortoiseSVN\T

svn分支开发注意事项

1.切换的时候最好查看本文件的是主干上的还是分支上的, 单击右键,点击属性,可以看到以下图片,其中"URL"就可以 看到是主干还是分支 2.切换到分支 点击切换后就选择要切换到的路径,如下: 3.待分支开发完后要提交到svn的分支上,然后切换到主干上进行合并(要注意一点的是如果分 支上没开发完,又需要临时切换到主干,也需要先将分支的代码提交到svn,否则会丢失所开发 的代码,如果需要临时修改主干上的bug,可以直接切换到主干上修改,不要在分支上修改, 免得影响分支版本的纯洁性) 点击合

基于Pojo的开发模式(day03)

上一次的文章讨论到了Spring的设计目标:使得JEE开发更易用. ok,作为一个Java开发人员,应该都知道struts这个框架,不知道是否大家都清楚struts1和struts2的区别. 首先,这两个是几乎完全不同的框架,struts2更像是另一个框架WebWork的升级版.当然我们这边要讨论的并非struts2,而是要由struts2的优点: 基于Action Pojo的开发模式,还是用代码来理解: struts2 public class CommonAction { } 或者ssh @

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

【转】svn 的开发目录结构和流程

原文: https://blog.csdn.net/iteye_15570/article/details/82548132 ---------------------------------------------------------- Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,bran

svn分支管理进行迭代开发

[[email protected] svndata]# svn co svn://192.168.1.111/app01 # checkout项目到本机 开始规划我们的svn项目目录: [[email protected] svndata]# tree app01/ app01/ #项目根目录 ├── branches #其他分支 │   ├── iterative-2 #迭代分支 │   ├── iterative-2-feature1 #基于迭代分支的特性1分支 │   └── itera

基于Web开发模式的信息抽取

基于Web 开发模式的信息抽取 信息抽取是一个互联网自然语言处理的一个首要环节,信息抽取的准确度会直接影响到后续的处理.信息抽取的目标是去除噪音,获取网页有价值的信息如网页的标题.时间.正文.链接等信息.   主流算法介绍 网页信息抽取的方法有很多,比如从算法上分:基于模板的,基于信息量.基于视觉的.基于语义挖掘的.基于统计的.从HTML 处理上分为:基于行块.基于DOM 树.下面我逐一介绍. 1.     基于模板,一般由人工维护一个URL 和HTML 的模板.当URL 匹配到某个URL 模板

基于MVC团队组合模式的系统开发

MVC团队组合模式,主要源于J2EE中常说的MVC演变而来.确切地说这个东西是我自己杜撰出来的,但又经历过一些项目实践,今天拿出来在与大伙这里说说,一来弥补一下自己长期不写技术类文章的缺陷,不然很多人又说我作为一个软件人,在博客中连起码的技术东西都没有,很是惭愧.二来也想把自己经历过的丁点经验告诉大伙,至于是对是错,有用与否,那只有天晓得了,哈哈.... 说到MVC团队组合模式,那就要说说我的框架WMframework, WMframework现阶段采用主要技术有:s2,ibtatis2,spr