在SVN中分为主干(trunk)分支(branch)标记(tag),branch和tag在一个功能选项中,非常容易混淆。
在实现中,branch和tag,他们默认的权限上和一般的目录没有区别。什么时候使用tag,什么时候使用branch完全是由个人根据规范和需要来选择的,并不是强制的。
一般情况下:
trunk:是用来做主方向开发的,一个新模块的开发,这个时候就放在trunk,当模块开发完成后,需要修改,就用branch。
branch:是用来做并行开发的,这里的并行是指和trunk进行比较。
tag:是用来做一个milestone的,不管是不是发布版本,但都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读的标记。
比如,1.0开发完成,这个时候要做一个tag,tag_xx_1_0,然后基于这个tag做发布,比如安装程序等。trunk进入 1.1的开发,但是1.0发现了bug,那么就需要基于tag_xx_1_0做一个分支,branch_bugfix_1_0,基于这 个branch进行bug修改,等到bugfix结束,做一个tag,tag_xx_1_0_1,然后,根据需要决定 branch_bugfix_1_0是否并入主干。
branches:分枝
当多个人合作,可能有这样的情况出现:A突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需 要花一段时间来完成,而这个过程中,A的一些操作可能会影响B的工作,A从现有的状态单独出一个project的话,又不能及时得到 B对已有代码做的修正,而且独立出来的话,A的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。 A建立一个自己的branch,然后在里面实验,必要的时候从B的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。
trunk:主干
主干,一般来说就是开发的主要呆的地方。
tag::标记
在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,那么你就需要给代码打上标签。
SVN使用的好,在合作中就会省去很多力气,也会防止出现很多不必要的BUG,对我们的工作来说,会大大提高效率,省时省力。