SVN开发中,trunk,tags,branchs使用的场景:
当我们项目的某个版本开发结束后,比如1.0版本的开发结束之后,并且项目已经上线了,此时我们接到了新的需求,要增加一些新的功能,假设我们将正在开发新功能的版本定为2.0版本。当我们对新版本的开发已经进行了一段时间的时候,刚好碰到有很多客户反映1.0版本存在bug,并且需要立马解决问题并上线;这个时候我们该怎么进行修改呢,是在正在增加新功能的2.0版本的基础上修改吗?答案肯定是否定的,因为新功能还没开发完成,更没有进行测试,怎么可能立马就可以上线;再次,如果修改bug的地方与新开发的功能涉及到同一处的代码,并且产生了冲突该怎么办呢。所以最好的办法就是我们对已经发布的1.0版本进行修改。这样的好处是:1、bug修复好了之后就可以立马上线,不需要等到新功能开发测试完成才可以上线2、在原来版本上进行修复,可以避免对正在开发的新版本(2.0版本)产生影响,因为如果在新的版本上进行修改,可能会带来新的bug。
下面是这一场景的执行流程:
1、开始一个项目(1.0版本) 项目名称为:trunk_1.0
2、项目开发结束(1.0版本) 发布新版本,将该版本复制到 tags中, 项目名称为:tags_release_1.0
3、准备增加新功能(2.0版本)
4、开发2.0版本的过程中发现1.0版本有bug,将tags_release_1.0复制到branch中进行修复,项目名称为:branch_fix_1.0
5、1.0版本修复完成,发布新版本,将该版本复制到tags中,项目名称为:tags_release_1.1
6、将branch中的branch_fix_1.0与trunk中正在开发的2.0版本进行合并(merge)。
注意:
1、开发2.0版本和修复1.0版本的bug的过程是两个互不干扰的过程,我们可以把他们看做两个不同的项目,他们都可以由多人进行协同开发。
2、在进行同时进行2.0开发与1.0版本bug修复的时候,因为他们两个是并行开发,为了保证trunk与branchs中的项目不会越走越远,我们需要让trunk与branchs时常能够感知对方,即branchs要时常和trunk保持同步,那如何保持branchs与trunk的同步呢,那就是merge(合并),没错就是合并,将trunk合并到branchs中。
参考资料:
http://www.cnblogs.com/dafozhang/archive/2012/06/28/2567769.html
http://blog.csdn.net/keda8997110/article/details/21813035
SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
http://blog.csdn.net/vbirdbest/article/details/51122637