SVN中trunk、branch、tag区别

虽然一直都在用svn作项目管理,但是一直都是傻傻的分不清主干、分支。今天小编就来详细介绍一下:

 

【branch】

分支:版本控制系统的一个特性就是能够把各种修改分离出来放在开发品的一个分割线上。这条线就被称为分支。分支经常被用来实验新的特性,而不会对开发有编译错误的干扰。当新的特性足够稳定之后,开发品的分支就可以混合回主干线上。

按照Subversion的说法,一个branch就是主干项目的一个拷贝,如下图所示:

每一个trunk下面的项目都有好多分支。因为开发团队中的成员有多个,每个成员为了保证工作的团队效果,同时又不影响其他同时的开发以及线上的项目,需要在自己的分支上进行代码操作,并不断地提交自己的修改,从而使得每一次修改在repository中都有记录。简单说来,branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,等到开发结束以后合并回trunk中。

假设一个这样的场景:

项目组长分配了一个开发新功能(新增支付宝支付方式)的任务给小冯,于此同时小董正在做一个使用银行卡支付的功能。这两个功能有很多公用的js和css等。这个时候,如果小冯不创建自己的分支,而是直接在主干项目上进行开发提交,就会直接影响到小董正在进行的项目的效果,这两个人就会陷入无限的版本冲突或恢复版本的死循环中,两个人本来关系还不错,但是还可以会因为给彼此造成的不良影响而影响同事之间的关系等等。。。

从而,可以通过分支开发,每个人都在自己的分支上进行功能的开发测试。就会省却好多不必要的冲突问题。等到开发完成之后,再将最终代码合并到主干项目中去。我想这才是SVN设置分支、主干的意义所在。

那么,如何建立自己的分支并进行合并分支的操作呢?

第一步,需要查看一下项目中是否有trunk、brunches、tag这三个基本的文件夹:

第二步,需要在brunches文件夹中新建自己的分支:

第三步,在自己的分支文件夹中copy一份主干中需要自己负责的代码:

完成了这三步,就可以在分支上开发自己的项目了。

第四步,待项目完成之后,需要合并分支到主干上。

进入到CollabNet Merge设置界面,一路next,

更新完成之后,点击next,进入下一步:

然后点击Finish就完成了合并分支到主干啦。

【trunk】

主干,作为开发主目录。一般存放的是当前最新最稳定的代码以及其他项目资料。每个项目通常只有一个主干。

我们在分支上将程序开发完成并通过测试后,需要将其合并到主干上面。

那么,如何合并主干呢?

第一步,需要下载一份trunk上的代码,然后在需要合并到主干上的项目上右击Merge并进入:

一路next,然后进入

下一步,点击Merge

然后,会弹出提示:

至此,就完成了合并主干啦。

【tag】

tag,字面意思是图标,在SVN里面也是做标记的意思。举个最简单的例子。咱们所做的项目不可能只是一个版本,很多情况下会是版本不断迭代更新的。从V1.0到V2.0、V3.0等。这个时候就可以使用tag做版本的标记了。

具体打tag的方式就是,将目前最新版最稳定版本的代码及其他资料,全部备份到tag文件夹中,并做好版本记录。

 

 

【学习小结】

通过这次的SVN实践,对里面的主干、分支以及打tag有了清楚的认识。真是实践出真知。大家也快尝试一下吧。