【DevOps】SVN分支操作快速入门
不要问笔者为什么不切换到GIT。
1. 前言
吐槽的话就不多说了,直接进入正题。
本文主要介绍一些SVN进行分支操作时候常见操作,提供一站式解决方案。(这里以TortoiseSVN为SVN客户端工具进行操作)。
2. 基本操作
2.1 创建分支
在被SVN管理的项目文件夹(包含.svn
隐藏文件夹)下右键: TortoiseSVN
> Branch/Tag...
。
选择将要创建的分支在远端SVN仓库的存放地址(该地址在SVN仓库端必须不存在),点击OK完成分支创建。
2.2 切换分支
右键: TortoiseSVN
> Switch...
。
选择将要切换到的分支:
2.3 合并分支
这一步应该算是整个分支操作中的重中之重,也是难点所在。进行分支合并的时候我们一定要确保大脑清晰,明确知道自己在做什么:
- 我现在操作的是哪个分支?
- 我现在需要将哪个分支上的哪些操作合并到当前分支上?
- 当前的合并是否产生了冲突?这些冲突应该怎样解决?
- …
操作:
- 右键:
TortoiseSVN
>Merge...
。 - 一般情况下选择第一个”Merge a range of revisions”。
- 选择将被合并的分支,以及该分支上相应的commit。
- 预检测是否存在冲突,并尝试解决冲突。
- 解决完冲突后进行点击”Merge”按钮进行实际的合并操作。
- 测试通过之后,提交合并结果到远程SVN仓库,合并操作完成。
注意:
- 分支创建是发生在远端SVN服务器的repository中,而merge是合并在开发者本地。
- “合并”的意思不是简单的文件合并,而是“操作合并”。如果有知道redis的AOF持久化的同学,应该比较容易理解。
svn上每个提交版本,都对应一组操作,你可能在本次提交中修改、新增、删除了某些文件,这些操作和这个版本对应,当进行Merge的时候,是将这些操作应用到本地Working copy中,这就是“合并”的本质:将某个版本(或者某个版本范围)的操作应用到本地的working copy!理解这点很重要!(Merge的type为“Merge a range of revisions”时的原理)
3. 题外话
说完了操作,再说一些题外话。
其实以上操作并不难,稍微理解下原理之后整个操作基本就是顺其自然的事情了。但分支管理又是非常难的事情,到底需要建立多少分支?如何保证分支版本之间的同步?出现问题之后如何回滚?如何保证每个分支里的commit是职责单一的以方便合并等等…这些分支操作之外的问题反而是成为推动分支管理的最大难题。
4. Links
- 添加链接描述
- SVN分支/主干Merge操作小记 - 作者写得可谓是相当详细了。
还没有评论,来说两句吧...