简介
在进行分支操作前,我们要先了解一下SVN的目录结构:
SVN 目录结构一般包含 Trunk,Branches,Tags 三个一级目录。
Trunk 表示主干目录,从这里创建分支
Branches 表示分支目录,放置项目的 release 版,开发人员在这些版本上进行开发和测试,完成之后需要合并到 Trunk 中
Tags 存储项目的发布版本,一般设置为只读
注意:SVN在本地是没有版本库的,因此每次提交都需要与主库连接
创建分支
由目录结构,我们知道最开始的分支一般是从Trunk主干目录内打到Branches内,一般来说,Trunk内会给项目分包,选择要进行分支的项目包,选择如图:
如图选择按钮,会连接到主库,选择要将包分支fork到主库的哪个位置
这里我们选择branches目录,并且添加要打包到的文件夹名,如果没有这个文件夹,会自动进行创建
填写日志,确认后,就会显示创建成功了,由此可以看到其实SVN的fork分支就是copy一份项目到另一个位置下
但是我们会发现,刚刚fork的分支在本地并没有,这是因为SVN只有一个主库作为版本库,需要进行更新同步才能获取到该分支信息
分支合并
分支有许许多多用途,具体的用途其实也是根据项目要求,公司标准,使用的管理策略进行敲定,但是也有一些总体不变的,比如branches分支内的分支基本是服务于主干开发与bug修复等作用
因此一般的合并都是从branches把代码合并到主干代码上来,合并操作如下:
- 进入要合并的主要分支,如主干分支等,选择合并选项
这里是在你没有在要合并的分支目录时可以选择第二个选项选择,这里直接默认即可
通过图示按钮选择要合并的远程库内分支
此时合并如果合并对象与本地文件有冲突点,就会如下图弹框,一般都选择最后一项编辑进行冲突解决
解决完冲突后,标记为已解决,就可以进行代码提交了
关于合并
-
大家在实际操作中也可以感受到了,合并其实是对服务端的SVN仓库包进行拉取与本地目录进行合并,因此要注意,合并前应该让分支进行更新
-
其实在本地文件未更新到仓库之前也可以进行合并,因此该合并还是相当灵活的,比如当你需要拉取一个分支模块的功能,但是此时你并不想更新你的代码时,可以直接合并对应分支,而且由于合并完成的代码并未直接提交更新,还可以进行进一步的本地测试修改调优,不会影响到其他队友的开发
分支切换
分支的切换这里有一点需要注意,切换之前要提交一下版本,否则的话建议建新目录进行下载分支,如果在未提交更新的分支进行分支切换,切换过来的分支文件如果与本地文件同名有冲突,会发生类似于合并冲突的情况,需要手动解决冲突
分支删除
与分支创建相似,分支删除其实就是删除掉对应分支文件夹
需要注意的是这个删除是删除远端版本的分支。
删除后如果想还原可以使用日志将本地文件还原到对应版本