您的位置:知蚁博客 » 程序设计 » svn trunk branches和tags

svn trunk branches和tags

作者: 发布时间:2012-09-24 分类:程序设计 标签: 1,211人浏览

到目前为止,我们一直使用的是如下的目录结构,calc的所有代码文件都放置在trunk目录中,而branches和tags目录一直都是空的,今天就说说为什么要有trunk、branches和tags目录。

root@jm-virtual-machine:/home/kris/calc# ls -al
total 24
drwxr-xr-x  6 root root 4096 2012-09-07 17:10 .
drwxr-xr-x 18 kris kris 4096 2012-09-20 15:48 ..
drwxr-xr-x  3 root root 4096 2012-09-07 17:10 branches
drwxr-xr-x  6 root root 4096 2012-09-21 14:26 .svn
drwxr-xr-x  3 root root 4096 2012-09-07 17:10 tags
drwxr-xr-x  3 root root 4096 2012-09-20 17:07 trunk

trunk,树干、主干的意思;branch,分支,branches就是分支的集合;tag,标签,tags就是标签的集合。
整个svn的版本库就好比一棵大树,trunk就是这棵树的主干部分,而每棵树也只有这么一棵主干,树自然少不了分支,没有分支的那是如意金箍棒,branches文件夹就是用来保存所有分支的地方。有了主干和分支,一个树也就完整了,那tags又是啥玩意呢?
tag可以理解为存档和快照,就好比你玩一个通关的游戏,有很多关卡,每次Game Over的时候都需要从第一关开始玩,是不是很恼火,于是就有了存档的概念,在你玩的时候每过一小或几关关卡就保存一下快照,再Game Over的时候直接加载这个存档就可以了,不用每次都重头开始。
在svn中建立tag也类似游戏中的存档,每到一个里程碑的阶段或者每次发布版本的时候,都可以为当前的版本库建立一个tag,如果后续项目的发展遇到了困难,而且被改的面目全非,可以很容易的从最近的tag中进行恢复。
在实际的项目中,trunk目录用来放置稳定的代码,而开发工作全部在分支上完成,等分支上的修改完成后并且足够稳定的时候再同步到trunk中,保证整个项目的茁壮成长。
还是以我们的calc项目为例,目前我们建立了两个整个版本库的工作拷贝,分别用来模拟两个用户kris和sally。在svn 冲突解决一节我们发现,两个人同时修改的时候经常会出现冲突的情况,虽然通过上篇文章,大家知道如何去解决冲突,但是每提交一次文件就解决一次冲突,很痛苦的。于是,分支的作用就体现出来了,kris和sally可以分别建立一个分支,各自在自己的分支上进行开发,这样就不会互相产生干扰了,等开发任务完成后再将在分支上所做的修改同步到trunk上即可。

注意事项

1、svn并没有强制规定一定要使用trunk、branches和tags这样的目录结构,如果你愿意,你可以任意使用其他的名称(前提是这个名字可以当做文件夹名);这是一种约定俗成的用法,已经算是实施上的标准了。
2、作为一个开发者,永远不要切换至、取出,或者向一个SVN tag提交任何内容,tags应该是只读不写的。svn本身并不限制对tags文件夹的写操作,因为这仅仅是一个约定俗成的东西,你完全可以用yourtags来保存所有的tag。
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/svn-trunk-branches-and-tags

相关文章

1访客评论

  1. 看不懂。。。。 :?:

    阿乾09-27 12:16 回复

我来说说

(必须)

(必须,保密)

你确定你已经看过文章了?
取消

无觅相关文章插件,快速提升流量