SVN 分支的合并和同步
使用 svn 几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来
即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影
响,最主要的原因是,自己对分支的目的和合并的方法不甚了解,这才是硬伤。
最近由于适配机型的需要(本人从事手机客户端的开发),需要经常接触分支和合并两项
工作,突然发现这玩意整不明白很难开展工作,遂这两天着重研究了一下,有点收获,怕
以后忘了,故趁着余温尚在赶紧写下来,好记性不如烂笔头嘛。下文的实践主要是参考了
TortoiseSVN 的帮助文档和 Subversion 的在线文档,Subversion 的在线文档:
http://svnbook.red-bean.com/en/1.5/svn-book.html
话说我公司现在的源代码管理挺乱的,svn 目录并没有采取标准的 source/
branches、source/trunk 结构,主线和分支放得到处都是,release 版本也并没有当成
tag 处理,而是当成 branch 来管理,经常还要在 release 版本上改来改去。。。
先说说什么是 branch。按照 Subversion 的说法,一个 branch 是某个 development
line(通常是主线也即 trunk)的一个拷贝,见下图:
branch 存在的意义在于,在不干扰 trunk 的情况下,和 trunk 并行开发,待开发结束后
合并回 trunk 中,在 branch 和 trunk 各自开发的过程中,他们都可以不断地提交自己的
修改,从而使得每次修改在 repository 中都有记录。
设想以下场景,如果你的项目需要开发一个新功能,而该功能可能会修改项目中的绝大多
数文件,而与此同时,你的另一位同事正在进行 bug !x,如果你的新功能不在 branch 中
开发而直接在 trunk 中开发,那么你极有可能影响另一位同事的 bug !x,他/她在 bug 修
复中可能会遇到各种各样的问题,因为你的频繁提交代码引入了过多的不稳定因素。你可
能会说,那我在开发的过程中不提交不就行了,等到我全部开发结束我再提交,是,你可
以这么做,那还要版本控制干什么呢?也许等到你最后提交代码的时候(也许一周,也许
两周?),你会发现有一大堆 con#ict 等着你 resolve。。。
评论0
最新资源