SVN中的Branch/tag在一个功能选项中,在使用中很容易产生混淆。 web
分支(Branch)管理和标记(Tag)管理,版本管理系统有两个基本的功能。svn
分支用于在并行开发,这里的并行是指和trunk(主分支)的并行。blog
而tag是用来作一个里程碑(milestone),无论是否是release,都是一个可用的版本。ci
那么何时用到tag管理?何时用到Branch管理?开发
我举两个场景:产品
场景一,有客户想对产品作定制,可是咱们并不想修改原有的svn中trunk的代码。it
场景二,咱们正在开发产品下阶段的任务,但上阶段的工做发现问题io
以场景二为例,项目某一阶段开发完成后,这个时候要作一个tag,tag_mfcai_V1.01.00,效率
而后基于这个tag发布一个新的版本,假设项目是web项目,那么基于这个tag发布一个war包。版本管理
而后trunk进入下阶段继续开发,可是很不幸发布的版本被检测出来了bug,有人会提议,把bug放到下阶段的任务中去。假设下阶段的任务才刚开始,用户可等不起.他们会认为一个小的bug解决要这么长时间,效率过低了.
那么就须要基于tag_mfcai_V1.01.00作一个branch,branch_bugfix_V1.01.00,基于这个branch进行bugfix,
等到bugfix结束,作一个tag,tag名称假设为:tag_mfcai_V1.01.01,基于这个tag再发布一个版本。
这样,又没有影响trunk(主分支)的开发。而后,根据须要决定branch_bugfix_V1.01.00是否并入trunk。
再介绍点打tag的知识。确认项目组成员的代码都commit后。
1)右击要打tag的目录--->TortoiseSVN--->branch/tag
2)再弹出来的对话框中,要求输入分支或标记的目标路径
3)建立分支或标记的时候,你有三个选项版本库中的最新版本,版本库中的指定版本,工做副本。
4)最后一个选项就是“切换工做副本至分支/标记”选项,若是选中这个选项,顾名思义你用来建立分支或标记的工做拷贝就会自动切换到指定建立的版本或标记的。固然你能够经过Switch(从新定位)和Checkout(检出)功能来完成切换的工做。
本文欢迎转载,转载请注明出处与做者
出处:http://blog.sina.com.cn/staratsky
做者:流星