SVN分支合并的原理及操作

来源:互联网 发布:手机怎么连接网络电视 编辑:程序博客网 时间:2024/05/29 12:04
一、SVN架构逻辑
先在trunk项目的主干代码版本上,通过SVN右键建立分支到branches,完成新建分支,这些分支都是主干代码的副本。
1、主干与分支上,均可以进行commit、update等操作,但在不发生merge的情况下,是各自独立、互不干扰的;
2、分支版本为减少偏离主线,不修改的代码部分应与主干版本保持一致,所以应发生代码编写前进行主干到分支的merge;
3、主干代码为吸收分支的代码更新:如果主干代码不发生同步开发的情况下,要定期进行分支到主干的merge;如果主干代码也同步在开发时,要经常进行分支到主干的merge,以保持版本统一。
4、对于稳定的主干版本,可以定期标记成tags目录下的分支,用于发布。
在各自分支以及主干上进行代码commit、update等简单操作,且互不干扰,大家可以放心地对本地的代码进行commit、update,以下重点介绍merge操作。
二、merge操作
merge操作区分两类:A、主干到分支的merge:完成分支未修改部分的代码,与主干代码的版本同步;B、分支到主干的merge:完成分支代码到主干代码的合并。
从主干合并到分支过程中有以下几种情况:
1、分支上未修改部分与主干代码版本一直(即主干代码未发生变化),则合并成功,可继续在分支上开发;
2、分支上未修改部分与主干代码不同(主干代码有修改):SVN默认以主干代码更新,完成合并,将合并后的改动commit至branch的版本器;之后可在分支继续开发;
3、修改部分与主干冲突(主干和分支都有代码修改,且主干修改与分支修改在同一个文件的同一行代码上):合并过程报出冲突,SVN会跳出四个选项来解决冲突:1)以主干修改版本为准,则更新本地版本为主干版本;2)以分支本地的修改版本为准,则保留本地版本不变;3)编辑冲突:会跳出手动修改冲突文档的界面,需要对照代码,参考不同版本,与他人商量来对文件进行编辑。4)推迟解决,即暂时忽略该冲突。完成编辑之后,在冲突文件上点击右键,选择解决,再commit变动至branch的版本器。
从分支合并至主干的情况类似,不再赘述。注意,两类merge的操作,主要是看合并源的选择,从分支到主干的merge,要在分支的目录下,合并源URL选择主干版本目录;相应地,从主干到分支的merge,要在主干的目录下,合并源URl选择分支的版本目录。
三、关于使用习惯
养成良好的使用习惯,会帮助大家减少代码merge时的冲突:
1、使用SVN时,可以经常操作提交、更新,对于自己本地代码的冲突,可以及时发现;
2、每次编辑代码前,记住要从主干版本库merge获取最新版本。每天下班前,将已经编辑过的代码都提交到分支版本库;
3、在每次代码提交时,都写上明确的message,方便以后自己或者别人查找更新的原因。
原创粉丝点击