前提
使用SVN分支技术,需要理解并掌握SVN的基本操作。
如果对SVN的基本操作不熟悉,或者存在理解上的问题,可能对分支的使用造成障碍。
一些基本概念:
1.版本库
版本库就是SVN服务器上,存放记录了文件、目录每一次变化的数据库。
2.工作副本
工作副本(也叫工作拷贝,很多时候简写做WC——即Work Copy)。它是版本库代码在本地的映射,开发人员在本地的工作副本中做修改再上传到SVN版本库中。
开发人员对于同一个版本库路径,比如https://KFBServer/svn/xykj_2013/trunk,可以创建无数个不同名称的本地文件夹进行下载,这就是“副本”这个名称的意义。
3.TTB目录
trunk、tags、branches
trunk:存放开发主线的文件夹,用于创建分支、合并分支、创建标记。
branches:存放分支的文件夹。
tags:存放“快照”的文件夹。通常,tags目录中的东西不再允许修改了,作为一个“定版”来测试、发布。简单的说,一个标签就是具有特定意义的一个版本。
“分支(branch)和标记(tag)对于 SVN 来说其实都只是主干的拷贝,这些拷贝本身并不存在分支和标记的区别,分支和标记的意义是我们人为给予的”。这句话在分支的使用中就会慢慢理解。
4.廉价拷贝
对于SVN来说,通常意义的创建分支,只不过是在版本库内创建了一个目录,并复制了一些文件和子目录过去。但你不需要担心版本库的体积会变得十分巨大,因为Subversion并不是拷贝真实的文件,而是通过拷贝“文件的快捷方式”来完成的。只有当复制后的目录、文件被程序员在本地做了修改并提交到版本库时,SVN才会用真实的文件来存储它们。
基本概念
一、什么是分支。
分支是软件开发中源代码管理的一种技术,而不是产品版本——比如精简版、普通版、豪华版,也决不是针对特定用户的特殊修改。
所谓的分支就是一条开发线。
说明:上图仅仅描述了分支的创建,并未谈到分支的合并。
不合并的分支只会得到不同的产物,这与我们的初衷相违背,因此我们在使用分支的时候,一旦分支代码通过了测试就必须合并,这样才能形成统一的一套代码。
二、为什么要使用分支
分支的作用:隔离。
1.避免未经测试的修改提交到版本库后对编译出的产品造成影响。
2.允许多个开发人员同时修改某一产品的代码时互不影响。
3.允许开发人员在自己的分支中提交半成品代码,即使是无法编译的代码;
4.单个开发人员通过创建多个分支,从而可以同时修改多个问题,并随意切换。相反,在单一开发线中修改多个问题,就很麻烦。
5.允许新入职员工随意修改代码。
三、分支和文件系统中简单的拷贝有什么不同
文件系统的拷贝:未处于SVN的管理中,人工比较、跟踪其他分支线的变化非常痛苦,而且容易造成闭门造车的结果,导致合并困难。
分支:处于SVN的管理中,大大减少了人工比较、跟踪其他开发线的工作量。分支既保持独立,又可以随时共享。
具体操作
使用分支前需要对版本库做结构调整,目前调整后的结构如下(不排除在对SVN更加了解以后会进行调整):
权限设置如下:
trunk:仅管理员可修改(用于新建项目),下面各文件夹的内容开发人员可读写(因为需要从分支做合并操作)。
tags:仅部门经理可写(用于创建特定版本,比如用于发布、通测等),其他用户只能读。
branches:管理员和部门经理可读写(用于清理很久不合并、不删除的分支),每个开发人员有一个固定的目录,只能读写自己的分支目录,看不到别人的目录。
假设场景:需要修改缺陷管理平台上的#77问题,那么首先从主干创建分支。
创建主干的分支
创建分支有多种操作方法。
1.使用本地工作副本的主干上创建分支。
在本地工作副本的主干目录(trunk)上,右键点击然后选择“分支/标记…”
在弹出的窗口中,默认的新分支的目标URL将会是主干trunk的URL。你需要