`
talentluke
  • 浏览: 604486 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SVN的分支/标记/合并

 
阅读更多

 

首先说下为什么我们需要用到分支-合并。比如项目demo下有两个小组,svn下有一个trunk版。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版【主干线】的一个copy版,不过分支也是具有版本控制功能的,而且是和主干线相互独立的,当然,到最后我们可以通过【合并】功能,将分支合并到trunk上来,从而最后合并为一个项目。

注意(本人意见,仅供参考):

1对于项目开发最简单就是一个个版本保留,比如主干project一开始开发到版本1,那么就创建一个副本projectV1作为备份,再创建一个projectV2用于继开发.

2 projectV2开发到版本2了那么就并入project,然后开一个新的分支project3用于继续开发。

3如果在开发过程主干版本V1同时也进行了修改,并入V2的时候就会有许多合并的冲突,一定要有计划,别到时候手忙脚乱。

 

Subversion有一个很标准的目录结构,是这样的。

比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是

svn://proj/|+-trunk+-branches+-tags
这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。

对于这几个开发目录,一般的使用方法有两种。我更多的是从软件产品的角度出发(比如freebsd),因为互联网的开发模式是完全不一样的。
第一种方法,使用trunk作为主要的开发目录。
一般的,我们的所有的开发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。当下一个版本/阶段的开发任务开始,继续在trunk进行开发。
此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。
例如,刚刚发布1.0,正在开发2.0,此时要在1.0的基础上进行bug修正。
按照时间的顺序

1.0开发完毕,代码冻结 
基于已经冻结的trunk,为release1.0打tag
此时的目录结构为
svn://proj/
             +trunk/ (freeze)
             +branches/
             +tags/
                     +tag_release_1.0 (copy from trunk) 
2.0开始开发,trunk此时为2.0的开发版 
发现1.0有bug,需要修改,基于1.0的tag做branch
此时的目录结构为
svn://proj/
             +trunk/ ( dev 2.0 )
             +branches/
                           +dev_1.0_bugfix (copy from tag/release_1.0)
             +tags/
                     +release_1.0 (copy from trunk) 
在1.0 bugfix branch进行1.0 bugfix开发,在trunk进行2.0开发 
在1.0 bugfix 完成之后,基于dev_1.0_bugfix的branch做release等 
根据需要选择性的把dev_1.0_bugfix这个分支merge回trunk(什么时候进行这步操作,要根据具体情况) 
这是一种很标准的开发模式,很多的公司都是采用这种模式进行开发的。trunk永远是开发的主要目录。

第二种方法,在每一个release的branch中进行各自的开发,trunk只做发布使用。
这种开发模式当中,trunk是不承担具体开发任务的,一个版本/阶段的开发任务在开始的时候,根据已经release的版本做新的开发分支,并且基于这个分支进行开发。还是举上面的例子,这里面的时序关系是。

1.0开发,做dev1.0的branch
此时的目录结构
svn://proj/
             +trunk/ (不担负开发任务 )
             +branches/
                           +dev_1.0 (copy from trunk)
             +tags/ 
1.0开发完成,merge dev1.0到trunk
此时的目录结构
svn://proj/
             +trunk/ (merge from branch dev_1.0)
             +branches/
                           +dev_1.0 (开发任务结束,freeze)
             +tags/ 
根据trunk做1.0的tag
此时的目录结构
svn://proj/
             +trunk/ (merge from branch dev_1.0)
             +branches/
                           +dev_1.0 (开发任务结束,freeze)
             +tags/
                     +tag_release_1.0 (copy from trunk) 
1.0开发,做dev2.0分支
此时的目录结构
svn://proj/
             +trunk/ 
             +branches/
                           +dev_1.0 (开发任务结束,freeze)
                           +dev_2.0 (进行2.0开发)
             +tags/
                     +tag_release_1.0 (copy from trunk) 
1.0有bug,直接在dev1.0的分支上修复
分享到:
评论

相关推荐

    svn 版本管理,分支/标记配置,创建

    通过《SVN 分支与合并.doc》和《用SVN分支管理多版本.pdf》文档,您可以更深入地了解分支和标记的实战操作,包括更复杂的合并策略和团队协作的最佳实践。 总之,svn的分支和标记机制为软件开发提供了灵活的版本控制...

    SVN分支合并到主干 冲突处理

    本文将详细讲解如何进行SVN分支与主干的合并以及冲突处理,帮助开发者更好地理解和掌握这一核心操作。 ### SVN分支与主干的概念 在SVN中,"分支"和"主干"是两个重要的概念。主干(Trunk)通常代表项目的主要开发线...

    Eclipse svn创建分支、合并、切换讲解

    Eclipse SVN 创建分支、合并、切换讲解 Eclipse SVN 是一个功能强大的版本控制系统,广泛应用于软件开发项目中。本文将详细讲解 Eclipse SVN 中创建分支、合并、切换的操作步骤。 一、创建分支 创建分支是 SVN 中...

    SVN 主干(trunk)、分支(branch )、标记(tag)

    并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建分支前将整个porject_name检出到本地,然后主干(trunk) 。 3、右键 选择 ...

    SVN 分支与合并详解

    下面是对SVN分支与合并的详细讲解。 1. SVN分支创建: 在SVN中,创建分支通常是为了进行长期的特性开发或隔离修复工作。你可以通过`svn copy`命令或者在图形界面工具中选择“创建分支”选项来实现。例如,要从...

    SVN创建、合并与切换分支操作详解

    以下是对SVN创建、合并和切换分支操作的详细解释: ### SVN目录结构 1. **trunk**:这是主开发分支,通常存放项目的主线开发代码。日常开发工作在此分支上进行,确保最新的稳定代码在这里。 2. **branches**:分支...

    SVN分支的创建与合并

    16. 合并完成后,打开 test.txt 文件,这时候可以看见文件的内容跟分支里的内容一样,并且文件上有红色叹号标记(说明已经修改过)。 SVN 分支的创建与合并是版本控制系统中非常重要的特性,可以帮助开发者更好地...

    SVN分支机制和开发规范

    二、 SVN分支简介 1、SVN仓库目录结构Repository 2、 结合eclipse创建分支 3、 结合eclipse创建标记tags 三、 合并主干和分支 1、 主干合并分支 2、 分支合并主干 3、 合并发生冲突 情况1:标记冲突,稍后处理。 ...

    svn分支管理

    分支合并到主干是svn分支管理的最后一步。在分支合并到主干中,我们需要按照以下步骤进行: 1. 将分支中改动的代码全部提交。 2. 切换到trunk。 3. 右击项目->Team->合并,选择merge two different trees,然后输入...

    SVN server/client

    5. **分支与标记**:SVN允许创建分支和标签,分支用于开发新功能,标签用于标记特定版本,这有助于保持项目结构清晰并支持并行开发。 **使用场景**: 1. **软件开发**:SVN是敏捷开发和持续集成的关键工具,帮助...

    SVN主干和分支操作

    #### 三、Eclipse 下 SVN 分支/合并/切换操作 在 Eclipse 中进行 SVN 的分支、合并和切换操作非常直观,下面详细介绍这些步骤: 1. **在 SVN 仓库中创建“trunk”、“branches”和“tags”文件夹**: - 切换到 ...

    svn分主干合并,让你分主干合并立马搞定

    本文将详细解释如何执行 SVN 分支合并,特别是如何将开发分支合并到主干分支。 首先,创建主干分支是合并过程的起点。在提供的示例中,开发人员使用 `svn cp` 命令从主干创建了一个新的分支。这一步骤确保了开发...

    软件+svn服务端/客户端安装包

    4. SVN分支与合并: SVN支持创建分支,让开发人员可以在不影响主分支的情况下进行实验性开发。分支完成后,可以通过合并操作将分支上的更改整合回主分支。这有利于团队并行开发,提高效率。 5. SVN权限管理: SVN...

    svn 合并、冲突及常用功能详解

    `svn merge`是Subversion(简称svn)中的关键命令,用于将一个分支或标记的修改合并到另一个分支。在版本控制系统中,合并是协同开发的核心操作,它允许团队成员同步各自的工作,避免代码冲突。以下是一些关于`svn ...

    SVN分支及合并使用文档.doc

    《SVN分支及合并使用详解》 版本控制系统Subversion(SVN)是软件开发中不可或缺的工具,尤其在团队协作中,分支与合并是其核心功能。本文将深入解析SVN的分支创建、管理和合并过程,帮助开发者更好地理解和运用这...

    TortoiseSVN 分支与合并操作

    **TortoiseSVN 分支与合并操作** TortoiseSVN是一款强大的Subversion(SVN)客户端,专为Windows用户设计。它提供了一个图形化的界面,使得版本控制操作更加直观和便捷。在软件开发中,分支管理和合并是至关重要的...

    SVN创建合并分支.docx

    ### SVN 创建与合并分支详解 #### 一、版本控制方案概述 版本控制系统是软件开发过程中不可或缺的一部分,它帮助团队管理代码的变化历史,确保项目的稳定性和可维护性。Subversion(简称SVN)作为一款集中式的版本...

    svn创建分支的做法.rar

    一、SVN分支的理解 在SVN中,分支是一种复制主分支(trunk)的方法,这样你就可以在不影响主分支的情况下进行开发。分支就像主分支的一个快照,你可以在这个副本上自由地添加、修改或删除文件,而不会立即影响到主...

    SVN合并操作说明

    SVN合并操作是版本控制中的一个核心功能,允许开发者将分支上的改动合并回主干(trunk)或在分支之间进行改动的同步。本文档将详细介绍如何在SVN中执行合并操作以及解决可能出现的合并冲突。 首先,合并操作需要...

    SVN分支合并经验总结

    ### SVN分支合并经验总结 在软件开发过程中,版本控制系统如Subversion(SVN)是团队协作不可或缺的工具。其中,分支管理和合并策略是确保代码质量和维护项目稳定性的重要环节。本文将深入探讨在SVN中进行分支合并...

Global site tag (gtag.js) - Google Analytics