使用TortoiseSVN进行分支管理

SVN中的Branch/tag在一个功能选项中,在使用中很容易产生混淆。
分支(Branch)管理和标记(Tag)管理,版本管理系统有两个基本的功能。
分支用于在并行开发,这里的并行是指和trunk(主分支)的并行。
而tag是用来做一个里程碑(milestone),不管是不是release,都是一个可用的版本。


那么什么时候用到tag管理?什么时候用到Branch管理?
我举两个场景:
场景一,有客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。
场景二,我们正在开发产品下阶段的任务,但上阶段的工作发现问题


以场景二为例,项目某一阶段开发完成后,这个时候要做一个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)创建分支或标记的时候,你有三个选项版本库中的最新版本,版本库中的指定版本,工作副本。
     最新版本(HEAD revision in the repository)——直接从版本库中最新创建,由于不需要从你的工作拷贝中传输数据,创建过程会很快。
     版本库中的指定版本(Specific revision in the repository)——同样是从版本库中创建,不同的是你可以指定一个版本号。如果你忘了版本号,可以通过显示版本记录来找到你想要的版本号(如下图)。这种方式同样不需要从你的工作拷贝中传输数据,创建过程也很快。
     工作副本——这种方式会依据当前工作拷贝的版本状况(无论是你做了本地的修改,或是将其中的某些文件更新到了一个历史版本)来创建分支拷贝。这种创建方式会根据工作副本中每个文件的版本情况来决定是否要从工作拷贝向版本库中传输数据。
4)最后一个选项就是“切换工作副本至分支/标记”选项,如果选中这个选项,顾名思义你用来创建分支或标记的工作拷贝就会自动切换到指定创建的版本或标记的。当然你可以通过Switch(重新定位)和Checkout(检出)功能来完成切换的工作。


本文欢迎转载,转载请注明出处与作者
出处:http://blog.sina.com.cn/staratsky
作者:流星

猜你喜欢

转载自staratsky.iteye.com/blog/1897141