`

SVN中Branch和tag优劣大比拼(转)

阅读更多

SVN中Branch和tag优劣大比拼

 

本节主要讲解一下在SVN中Branch和tag的比较,SVN中Branch和tag在一个功能选项 中,在使用中也往往产生混淆。在实现 上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完 全由人主观的根据规范和需要来选择,而不是强制的(比如cvs),下面我们就来看一下SVN中Branch和tag的具体介绍。

 

SVN中Branch和tag的比较
在SVN中Branch和tag在一个功能选项中,在使用中也往往产生混淆。在实现上,branch和tag,对于svn都是使用copy实现的,所以他 们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs)。

一般情况下,tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。更多的是一个显示用 的,给人一个可读(readable)的标记。
branch,是用来做并行开发的,这里的并行是指和trunk进行比较。比如,3.0开发完成,这个时候要做一个 tag,tag_release_3_0,然后基于这个tag做release,比如安装程序等。trunk进入3.1的开发,但是3.0发现了bug, 那么就需要基于tag_release_3_0做一个branch,branch_bugfix_3_0,基于这个branch进行bugfix,等到 bugfix结束,做一个tag,tag_release_3_0_1,然后,根据需要决定branch_bugfix_3_0是否并入trunk。对于 svn还要注意的一点,就是它是全局版本号,其实这个就是一个tag的标记,所以我们经常可以看到,什么什么release,基于xxx项目的2xxxx 版本。就是这个意思了。但是,它还明确的给出一个tag的概念,就是因为这个更加的可读,毕竟记住tag_release_1_0要比记住一个很大的版本 号容易的多。

 

SVN中Branch和tag建立的方法比较简单,totoiseSVN中的操作是:
1.选择Branch和tag..
2.在出来的界面中的ToURL中填上URL,一般是svn://IP/Project/branches/branch-1,这样就建立了一个 branch-1的branch.建立tag是一样的操作,只不过URL一般是svn://IP/Project/tags/tag-1
3.后面的Createcopyfrom是用于选择从你当前的workingbase中的哪个版本中建立Branch和tag,可以根据自己的选择来订 制,一般选择HeadRevision
subclipse中几乎是一样的操作。

Merge分为很多种:
1.多个branch之间merge
2.branchmerge到trunk
3.trunkmerge到branch
第2种用的比较多,比如在otfs接口中netamount的需求提出后就得建立一个netamount的branch,trunk继续在非 netamount的情况下继续开发,netamount单独开发,当netamount功能测试通过后,将netamountbranchmerge到 trunk下,然后将trunkrelease。第3种情况用的也不少,如上的例子,当用户进行netamount测试时,如果用户不想只测试 netamount的功能,则需要将trunk中的修改merge到netamountbranch,然后从netamountbranch中发布一个版 本供用户测试。

branch merge to trunk在tortoiseSVN操作如下:
1.选择TortoiseSVN->Merge
2.选择Reintegrateabranch
3.选择FromURL,URL填好之后可以点击ShowLog,可以看看这个branch是否是你要merge的内容,下面的Workingcopy中 也可以ShowLog,可以确认一下你的工作目录是否是trunk。确认后点击Next
4.MergeOptions里面有些选项,根据需要来选择,TestMerge按钮会告诉你这次Merge会做哪些操作,最好先TestMerge一 下!如果是预期的Merge操作,点击Merge则可以将branchMerge到本地工作目录下
5.有冲突的文件需要解决好冲突,解决之后点击svncommit则完成了merge

SVN中Branch和tag比较介绍时从多个revision中merge到本地工作目录在tortoiseSVN的操作如下:
1.选择TortoiseSVN->Merge
2.选择Mergearangeofrevisions
3.URLtomergefrom填上merge的来源,merge来源一般和你的workingcopy是不同的branch或者 workingcopy是trunk而mergefrom是branch
4.Revisionrangetomerge填上需要merge的revision,格式是1,3,5或者1-10
5.后续操作同Reintegrateabranch

subclipse进行Merge操作同tortoiseSVN的操作方式有所区别,原理基本同Mergearangeofrevisions。
点击Team->Merge后,只有一个界面,这个界面提供了两种Merge操作方式:
1.Merge某个版本范围内的修改到本地工作目录上
2.Mergefeaturebranch到trunk(也需要先merge到本地)
第1种的操作方法是:
1.在fromurl中填上branch的url
2.fromrevision中选择建立这个branch的revision号,不是最新的那个版本号!
3.tourl框中勾上"Use'From:'URL"这个checkbox,ToRevision中选择需要需要Merge到的revision号,一 般勾headrevision
4.Dryrun让你预览一下merge效果,UnifiedDiff将Merge的两边进行Diff并将Diff结果保存到文件中。(在我机器中 Dryrun没有窗口出来,diff结果的文件除非只有很小的变化,不然看得头大)
5.点击Merge将merge到本地,这时候与版本库进行一下同步应该和上一步的dryrun有同样的效果,如果merge过来的东西不是你预期的更改 可以选择revert,但是新增的文件需要手工删除!如果是预期的merge效果,那commit,记得在comments中写上merge来的 branch、fromrevision、torevision(不要写head,写数字)总的来看subclipse的merge操作并不方便,不如 tortoiseSVN。SVN中Branch和tag的比较介绍完毕。

分享到:
评论

相关推荐

    SVN trunk, branch, tag merge 等的应用

    SVN(Subversion)是一种广泛使用的版本控制系统,它的核心概念包括trunk、branch和tag,这些都是进行协同开发和代码管理的重要元素。下面将详细解释这些概念以及它们在实际项目中的应用。 1. **Trunk**:Trunk通常...

    SVN版本控制方案

    - 特殊环境如生产环境、测试环境等只能从修复过的Tag中checkout和update; - 根据软件版本或项目状态命名Tag,如"1.0.3"、"stable"等; - 当Trunk稳定并对外发布时,应重新创建Tag,并更新相关环境。 #### 三、...

    SVN中的Branches分支以及Tags标签详解与应用举例

    创建 Branch 分支或者 Tag 标签非常容易,只需要在 TortoiseSVN 中创建对应的文件夹,然后将其提交到 SVN 服务器中。例如,创建一个名为 v1.0 的分支,用于发布一个版本的文件。 Branches 分支的修改和使用 Merge ...

    4.1、SVN trunk(主线) branch(分支) tag(标记) 1

    本文将深入探讨 SVN 中的 trunk、branch 和 tag 三个核心概念,以及它们在实际开发场景中的应用。 首先,trunk(主干或主线)是项目的主要开发分支,代表了项目的最新稳定状态。新功能的开发通常在这个分支上进行,...

    SVN的标准目录结构:trunk、branches、tags

    当需要建立 branch 或 tag 时,可以使用 SVN 中的 copy 操作,例如,从 trunk 中 copy 到 branches 中,或者从 trunk 中 copy 到 tags 中。 权限控制 在 SVN 中,可以使用 authz 文件控制目录的访问权限。例如,...

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

    资源中有 SVN 主干(trunk)、分支(branch )、标记(tag) 的详细解释,和作用 并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建...

    SVN中文手册 SVN中文手册

    SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN资料 svn配置SVN svn SVN中文手册 SVN...

    SVN中文教程 SVN简明教程 SVN学习笔记

    - **Branch(分支)**和**Tag(标签)**:用于支持灵活的开发策略,分支用于并行开发,标签用于标记特定版本。 4. **SVN协同工作流程** - 开发者先从仓库检出最新代码到本地。 - 在本地完成代码修改后,进行`svn...

    svn的中文插件下载

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回溯、合并和恢复错误。在中文环境中,使用英文界面可能会对一些用户造成困扰,...

    SVN 安装包+中文插件

    在这个“SVN安装包+中文插件”中,包含了TortoiseSVN客户端和中文语言包。 TortoiseSVN是SVN的一个图形化界面工具,它集成在Windows资源管理器中,提供直观易用的界面来执行SVN操作。TortoiseSVN-1.14.1.29085-x64-...

    SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包

    SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包和中文包SVN1.14.6安装包...

    svn svn64位程序 svn中文语言包

    在这个压缩包中,我们找到了“svn svn64位程序”和“svn中文语言包”,这意味着这个压缩包是为64位操作系统设计的,并且包含了支持中文界面的语言资源。 1. SVN基本概念: SVN的核心概念包括仓库(Repository)、...

    SVN中文翻译教程

    Subversion(简称SVN)是一种版本控制系统,用于管理软件项目中的文件和目录。它记录了文件和目录的历史更改,允许团队成员协同工作,同时跟踪各自的修改,防止数据丢失或冲突。本教程将详细介绍SVN的基本概念、安装...

    svn中文帮助文档

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件。这个“svn中文帮助文档”提供了一套完整的中文指南,方便中国用户理解和使用SVN。以下是该文档可能涵盖的关键知识点: 1. **...

    TortoiseSVN,SVN安装包附中文插件

    6. **分支(Branch)和标签(Tag)**:分支允许开发人员在不影响主开发线的情况下进行实验性开发。标签是仓库的一个快照,用于标记特定版本。 **TortoiseSVN的特色功能** 1. **右键菜单集成**:在Windows资源管理...

    myeclipse用svn提交的时候报错

    - **使用最新版本软件**:及时更新MyEclipse和SVN客户端至最新版本,以获取最新的bug修复和性能优化。 - **备份重要数据**:在执行任何可能导致数据丢失的操作之前,最好先备份重要的工作副本数据,以防万一。 通过...

    svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和

    svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端...

    svn中文操作手册

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的修改历史。它允许团队协作,确保代码的一致性和版本控制。本 SVN 中文操作手册将深入讲解 SVN 的基本概念、安装与配置、命令行操作以及...

Global site tag (gtag.js) - Google Analytics