停止更新,敏捷测试及TestOps解决体系,关注订阅号TestOps
SVN的分支与合并
上一篇 /
下一篇 2007-05-23 10:40:54
/ 个人分类:配置管理
51Testing软件测试网8mn.sCT
o正好在回答论坛某帖子的时候去整理了一下这个概念
s0y yCl!kd0w.?Sg!SQ
h#?}1Bm0对于svn的tag,更多的是一个显示用的,给人一个可读(readable)的标记。51Testing软件测试网k4]sJP
51Testing软件测试网Mmk r
q6@*H因为在实现上,tag和branch,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。51Testing软件测试网d
\ci6Y6_iX
这里也就假定,对人,操作者,对他的要求就很高了。
&Z"[$`P?3GR8cp0也就是使用svn的时候,什么时候用tag,什么时候用branch,完全由人主观的根据规范来选择,而不是强制的(比如cvs)。51Testing软件测试网u\`9K4E\
zg%_2`o
nWs0一般,我在使用的过程中,51Testing软件测试网.{hJpni3LMh)N
tag是用来做一个milestone的,不管他是不是release,他都是一个可用的版本。这里,应该是只读的。
9g!aft'n};d|5m0branch,是用来做并行开发的,这里的并行是指和trunk进行比较。51Testing软件测试网0N7h*d6za}
比如,3.0开发完成,这个时候要做一个tag,tag_release_3_0,然后基于这个tag做release,比如安装程序什么的。51Testing软件测试网Qy&F D6G`x
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。
{Hx6O i)_Fx;a3o051Testing软件测试网c9\^&`~8F
kU
对于svn还要注意的一点,就是他是全局版本好,其实这个就是一个tag的标记,所以我们经常可以看到,什么什么release,基于xxx项目的2xxxx版本。就是这个意思了。但是,他还明确的给出一个tag的概念,就是因为这个更加的可读,毕竟我记住tag_release_1_0要比记住一个很大的版本号容易的多。
3^i$J.fV\J0简单说:
51Testing软件测试网 _(q*Y$y wrN9Sx(c x.l9RwD$s0trunk(开发主干,可读写)
51Testing软件测试网.V)r:i%l7bm9Oqbranches(并行
分支开发,一般基于某tag,可读写)
$@ tU4dN0mM)y
y0tags(发布,一般只读)
V]r4_9O O0应该是个很清晰的脉络。
收藏
举报
TAG:
svn
分支
合并
SCM