多分支开发,Merge是一个绕不过的话题,不管是Git还是SVN,公司用的是SVN,之前对于SVN的Merge没有很好的研究,出了些状况,这个问题不解决,顺畅地进行多分支开发就是海市蜃楼,下定决心把这块给完全搞透,在百度上找到的都是太古老的资料,SVN的帮助又没有写得太清楚,没有例子,最终在StackFlow上找到了线索,通过自己的试验找到了一条我认为是正确额做法。简单总结如下:
1、主干是一切的基石
2、任何分支的来源都必须是主干
3、如果主干修改不多,以分支修改为主的,且需要把主分支的变更及时同步到子分支的,就一定要及时Merge,也就是主分支有变更之后立即Merge到子分支
4、每次从主干建立一个新分支之前,一定要把还在开发的分支都Merge到主干
5、如果从主分支建立子分支之后,主分支的改动由于某种原因不宜立即Merge到子分支的(比如:子分支是处于集成测试阶段即将发版的,在主分支上修复了某些不在这次发版范围内的小Bug),在子分支告一段落后,一定要及时Merge到主分支
6、对子分支的管理,要注意以下原则:
1)没有必要不要建立子分支:子分支越多,越难管理
2)开发结束之后确定不需要再维护的子分支,建议及时删除
7、一般情况下不建议使用“Merge to different trees”来做Merge,第3、4种情况,都请用“Merge a range of revisions”,(TortoiseSVN1.8版以上),具体如下:
要从主分支Merge到子分支的时候,在子分支的WorkCopy上点击右键选“Merge”,具体设置如下:
要从子分支Merge到主分支的时候,在主分支的WorkCopy上点击右键选“Merge”,具体设置如下: