TortoiseSVN创建/合并分支
1. 创建分支
A.打开分支创建对话框
选中项目文件夹->鼠标右键->TortoiseSVN->Branch/tag…
B.设置分支信息
1) SVN服务器上分支创建的相对路径
2) 根据相对路径拼接出来的SVN服务器全路径
3) 对于新建分支的说明(里面记述创建分支的原因等)
4) 需要拷贝的源版本信息
选项一:代码库中的最后一个版本
选项二:代码库指定版本,默认为本地获取时的版本号
选项三:当前工作区的代码内容个,这部分包含了代码获取后未提交的修改
2. 使用分支代码
Checkout所需获取的分支代码,然后基于这个本地副本你可以进行编辑修改工作。
3. 合并分支
场景:在Branch_Test1中发生了文件的新建、修改、删除,现在需要将Branch_Test1中内容合并到Branch_Test2中。
A.合并准备
为了降低合并风险,在合并操作开始之前应该确保本地接受合并的基版本中发生的修改已经全部提交。
B.打开合并分支对话框
选中需要合并的主版本->鼠标右键->TrtoiseSVN->Merge…
C.合并操作
1) 选择合并模式
通常我们使用选项一,为了方便学习,对两个选项的说明如下:
选项一:合并一个范围的版本,主要是把分支中的修改合并到主干上来。
选项二:合并两个不同的树,这种类型的合并,无论主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的某个版本进行合并。
2) 设置合并范围(合并一个版本范围)
- 要合并的分支在SVN服务器上的来源
- 合并版本的选择
选项一:所有未合并的版本全部进行合并
选项二:指定的版本范围,“-” 表示选择范围,“,”进行多个范围拼接。如果勾选CheckBox,则表示要将文件还原到早起版本。
注:SVN会记录你已经合并过的版本,所以合并时一定注意是要合并还是要还原。合并时指定版本序号必须大于上次合并过的最大版本号;还原时指定版本序号必须小于上次合并过的最大版本序号。
- 合并后的内容保存在本地的路径
3)设置合并范围(合并一个版本范围)
- 主干的SVN服务器地址(改地址应与本地工作副本的SVN服务器地址一致),以及要合并的主干版本
- 分支的SVN服务器地址,以及要合并的分支版本
- 本地工作副本的存放路径
4)合并深度设置
通常默认的设置就可以,下面为了便于使用对各选项进行说明
l 合并深度
-
- 参造当前本地的工作副本
- 全递归,检出完整的目录树:包含所有的文件和子目录
- 直接子节点,包含文件夹:检出目录,包含其中的文件或子文件夹,但不递归展开子文件夹。
- 仅文件子节点:检出指定目录,包含所有文件,但是不检出仁和子文件夹。
- 仅此项:只检出目录。包含其中的文件或文件夹。
l 对于行结束符与空白符的处理
-
- 忽略祖先:如果在分支上有一个文件曾经被删除过,后来又加了一个同文件名的文件,那么在merge的时候svn会识别到这两个文件不是同一个祖先而直接覆盖旧文件增加新文件。而实际上我是要对这两个不同祖先的文件进行合并的,这个时候就需要使用ignore ancestry 这样SVN的处理就会变成合并文件差异,而不是删除再覆盖
- 忽略行结束符:排除仅行结束符的差异
- 比较空白符:将所有缩进和行内空白差异视为增加/删除行
- 忽略空白符的变化:排除哪些完全是针对空白数量的修改。但在原来没有空白的地方增加空白或删除全部空白仍然会被视为修改
- 忽略所有空白符:排除仅空白改变的差异
l 其他选项
-
- 强制合并:如果本地有个文件不受版本控制,在其中我们有修改一些内容。而在分支上进行了添加并删除。如果勾选强制合并,这个文件将被删除,所有本地修改将丢失。
- 只记录合并(阻止这些版本将来被合并):选择此项意味着并没有实际的合并动作,只是将分支的指定版本标记为已发生合并,以后再发生合并时,系统自动过滤掉已合并过的版本。
- 做整合而不是自动合并
5)完成合并
确认合并后,SVN会自动将本次合并的日志输出,如果有冲突需要解决,和我们Update时的处理方式是一致的。
D.确认提交
在完成合并操作后,代码只是在本地副本中完成了合并,最后还需要人工将合并后的代码提交SVN代码库。