SVN中的Trunk、Tag、Brance的用法

在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要比记住一个
很大的版本号容易的多。
branches:分枝
当多个人合作,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可
能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需
要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到
Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。
John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。
(svn copy SourceURL/trunk DestinationURL/branchName -m "Creating a private branch of xxxx/trunk." )
trunk:主干
主干,一般来说就是开发的主要呆的地方,
 tag: 在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,那么你就需要给代码打上标签。
(svn cp file:///svnroot/mojavescripts/trunk file:///svnroot/mojavescripts/tags/mirrorutils_rel_0_0_1
-m "taged mirrorutils_rel_0_0_1")
另有一说,无所谓谁对谁错。
trunk:表示开发时版本存放的目录,即在开发阶段的代码都提交到该目录上。
branches:表示发布的版本存放的目录,即项目上线时发布的稳定版本存放在该目录中。
tags:表示标签存放的目录。

这需要说明下分三个目录的原因,如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy到branches上,这
样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches上的稳定的版本就是发布到生产环境上的代码,如果用户

使用的过程中发现有bug,则只要在branches上修改该bug,修改完bug后再编译branches上最新的代码发布到生产环境即可。tags的

作用是将在branches上修改的bug的代码合并到trunk上时创建个版本标识,以后branches上修改的bug代码再合并到trunk上时就
从tags的version到branches最新的version合并到trunk,以保证前期修改的bug代码不会再合并。
-------------------------------------------------------------------------------------------
一直以来用svn只是当作cvs,也从来没有仔细看过文档,直到今天用到,才去翻看svn book文档,惭愧
需求一: 有一个客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。
方法: 用svn建立一个新的branches,从这个branche做为一个新的起点来开发 svn copy svn://server/trunk svn://server/branches/ep -m "init ep"
Tip:
如果你的svn中以前没有branches这个的目录,只有trunk这个,你可以用 svn mkdir branches 新建个目录
需求二:
产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本 svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"
咦,这个和branches有什么区别,好像啥区别也没有? 是的,branches和tags是一样的,都是目录,只是我们不会对这个release-1.0的tag做修改了,不再提交了,如果提交那么就是branches
需求三: 有一天,突然在trunk下的core中发现一个致命的bug,那么所有的branches一定也一样了,该怎么办? svn -r 148:149 merge svn://server/trunk branches/ep
其中148和149是两次修改的版本号。

时间: 2024-08-06 20:56:36

SVN中的Trunk、Tag、Brance的用法的相关文章

svn中的Trunk,branches,tags深度理解

trunk.就是主干,这个目录以下直接放源代码了,我们创建项目的时候,把项目源代码放到这个目录.import进svn branches.就是分支,以下可能有非常多trunk,比方trunk_1_0_1,表示trunk1.0.1版本号,就是改动1.0版本号存在的bug,trunk2.0等.就是在分支上改动开发.还能够多切几个分支,每一个分支开发不同的功能,先开发完毕的先合并到主干先公布 tags,就是备份,每次公布上线后都要相应的备份一份代码,假设哪天发现哪个版本号有bug,直接从备份代码做一个分

SVN中tag branch trunk用法详解

SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag branch trunk都属于SVN的子命令,那么他们是如何使用的呢,本文就给大家一一讲解. AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载! 本节主要讲解一下SVN中tag branch trunk的用法,在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆.这里就向大

【转】SVN中trunk,branches,tags用法详解

SVN中trunk,branches,tags用法详解 Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修 改).但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯. 对于这几个开发目录,一般的使用方法有两

SVN中trunk、branches、tag的使用

我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说明SVN里的trunk,branched,tags这个三个文件目录的用法. 我将会详细说明我是如何应用SVNtrunk(树干).branches(分支)和tags(标记).这种方法同样被称为“branchalways”,两者非常接近.可能我所介绍的并不是最好的方法,但是它会给新手一些解释说明,告诉他们trunk.branches和tags是什么,并且该如何去应用它们. —

SVN 中trunk、branches、tags的详解

1.trunk是主分支,是日常开发进行的地方. 2.branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本,也可以放在分支中进行开发. 3.tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档.注意:svn并没有明确的规范,更多的还是用户自己的习惯.下面是详细介绍:比如一个项目有main.cpp, common.h两个文件,假设目前在开发的是最新的3.0版本,而且1.0

SVN 中trunk、branches、tags都什么意思?

1.trunk是主分支,是日常开发进行的地方.2.branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本,也可以放在分支中进行开发.3.tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档.注意:svn并没有明确的规范,更多的还是用户自己的习惯.下面是详细介绍:比如一个项目有main.cpp, common.h两个文件,假设目前在开发的是最新的3.0版本,而且1.0/2

SVN 中trunk、tags、branches使用

简介 我们都知道SVN是管理项目源代码的软件,可以把我们开发中的各个阶段的代码记录下来,供我们以后来使用,那么SVN具体的结构你是否知道呢?下面我们来介绍一下它的基本结构 Trunk.Branches.Tags.作用 Trunk 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码. 这里的代码将会工作到你的下一个主要发布版本. Trunk应该只被用来开发将会成为你的下一个重要版本的代码. 几乎常常人们只使用trunk来存放他们的代码.发放了一个版本后继续在

把svn中的分支(branch)合并到主分支(trunk)

把svn中的分支(branch)合并到主分支(trunk) 操作步骤 1 branch 和 trunk的代码同步至最新 2 选中trunk项目需要合并的代码(可以项目根目录.也可以是子目录或文件) 3 选择合并操作 ( team-->合并) 4 选择合并一个分支(reintegrate a branch) 5 填写需要合并的分支目录(reintegrate a branch)

svn的branch truck tag

对于branch truck tag一直迷迷糊糊的,想搞明白,但是一直又没来弄明白,最近就用了这种方式来开发 可以我又不是完全了解怎么操作,所以查看了下资料,这个解释得很详细呀,连我都看得懂的东西,真所谓"写得真好",记录下,转载http://blog.csdn.net/keda8997110/article/details/21813035 先说说什么是branch.按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一