项目中的SVN分支使用方法
一、主干-分支的初始化操作
1、新项目/新工程在初期开始时,首先在主干的代码目录中创建空的工程目录或导入初始工程目录;
示例:如下图中的demo-project目录;
2、生成分支工程目录;
指定分支存放的位置,目录的名字最好包含原工程目录的名字,如果是考虑会有多个分支,可以增加目录名的后缀。
3、到分支所在的目录下,更新SVN;
二、分支管理的日常操作
名词解释:
正向集成:更新分支代码,将最新的主干状态同步至当前分支的操作。(分支 <= 主干)
逆向集成:将分支代码合并回主干的操作;(分支 => 主干)
这两个操作,都是通过菜单“Merge…”来完成的,只是操作时的工作目录不同:
1、做正向集成时,是在“分支”的工程目录上打开的“Merge…”菜单,如下例:
注意:此处的“URL to merge from”指定的来源是主干下的工程目录。下边也会显示当前操作所在的本地分支目录,必须要注意来源与目标都是正确的。
此处的选项,如果没有特殊需要,默认即可。
Merge成功后,只是将主干的最新代码合并到本地的分支目录中。如果有文件存在冲突,需要手工解决冲突后,再做“Commit”操作,提交后才算是完成了一次代码合并。
2、做逆向集成时,是在“主干”的工程目录上打开的“Merge…”菜单,如下例:
注:以下步骤会略过与”正向集成“时同样的默认窗口,只将不同的设置界面演示出来。
注意:此处的“URL to merge from”指定的来源是分支下的工程目录。下边也会显示当前操作所在的本地主干目录。
同样,在完成代码合并后,在没有代码冲突的情况下,进行”Commit“操作,完成本次的代码合并。
三、其它补充说明
1、什么时候需要做”正向集成“?
- 当有紧急的Bug修复或需求对应时,可能会直接在主干上修改、提交代码,如果使用中的分支需要同步更新这些变更时,需要做此操作;
- 当某个工程有多个并行分支,某个分支完成了Bug修复或需求对应,就会合并回主干(逆向集成),此时其它使用中的分支工程可以也同样需要拿到这些最新的变更代码,就需要做此操作;
2、什么时候需要做”逆向集成“?
- 分支完成了Bug修复或需求对应,完成测试:验证过功能没有问题,并且对线上功能没有引入新的Bug。此时就可以将当前分支代码合并回主干,等待发布;
3、关于多个分支。
当一个项目有多个并行的需求对应,而且纳品时间点不同,可以为这些互不影响的需求创建独立的分支用于开发,各自完成开发、测试后,再合并回主干。
当某个分支长期未使用时,使用前必须要确认一下当前分支的状态:是否含有未合并回主干的代码?是否是主干的最新状态?如果是存在不再需要的代码变更 ,建议删除此分支,重新创建一个新的分支来使用。如果确认当前分支的代码都已经合并回了主干,那么在使用至少要做一次”正向集成“,以保证分支的最新状态与主干同步。
4、关于SVN的分支与git的分支
在SVN中的分支,就是一个独立的子目录,它只是与主干目录与某种revision的联系,在本地的工作目录中,它与主干是同时存在的;而git的分支与主干之间更像是个”平行世界“的关系,工作目录只能处于某个分支下(”主干“也相当于一个分支)。
SVN的分支虽然也是”切换分支“的能力,但不建议使用,容易造成混乱 。