保持版本库关系的简单
通常我们会把软件仓库(版本库)分为trunk(主干)、分支(branches)、标签(tags)。分支应尽量从主干而来。有时候不可避免的要从分支开出一个新的分支,但这样的分支应该尽快的合并到它的父分支去。
我所在的是一家互联网公司,网站的发展速度非常快,需求也特别多,程序的升级也就非常的频繁。在实践中,发布分支(relase branch)是开得最多的分支,一次程序的重大升级,都会创建一个新的发布分支。
发布分支应该从主干上创建。在建立发布分支之前,把所有本次要发布的一些特性合并到主干上,然后再创建发布分支。建好之后,在该分支上做程序上线最后的测试以及BUG修复。一切准备就绪,你可能会对当前的分支版本做个标签,
比如说,relase-1.1,代表正式版本1.1的发布。最后,只要把线上的程序环境切换到新的发布分支上,就完成了发布工作。如果你有多台web服务器,你可能会通过控制台服务器把程序同步到多台web服务器上去。
使用发布分支作为线上分支
网站型的项目,跟其他类型的项目不同的地方是,在产品运行过程中,会不断的对它进行一些小改动,BUG修复或者功能改进;而且是改了之后,经过测试部门测试之后,程序就立马上线了。我们采用的做法是,把发布分支同时也作为线上产品分支。在新版本上线之后,发布分支继续她的生命,但这时的她已经脱胎为线上分支了。一些小改动,就在该分支上进行。一些稍大一点的需求或改动(需要1人日工作量以上的),我们会从线上分支上建立一个针对该需求的分支,比如(REQ-21,21号需求),程序员就在该分支上进行提交。等完成后,再合并到发布分支上,做发布。
分支不宜过多
虽然svn的分支功能很好用。但你也不宜过多的开分支,分支多了,会把你给搞糊涂了。
合并要及时
长时间的不合并分支的代码,到合并时,你会觉得非常的恼火,因为可能一大半文件起冲突了,需要手工合并。这个工作量会是非常惊人的,还会很容易出错。像上述提到的线上分支,我们会一个星期合并一次到主干。当然这个频率应该跟版本库的改动频率有关。