Eclipse SVN 中的分支与合并

来源:互联网 发布:php程序员的工作状态 编辑:程序博客网 时间:2024/06/07 02:19
    这两天,项目大体上都完成的差不多了,剩下的都是细节上修修补补的东西。所以,负责人将项目在SVN上做了各个模块对应的分支。分支,在此之前也没有使用过SVN上的分支,这一次,又算是学习到了一些新的东西。
【SVN—目录结构】
    SVN的标准目录结构:trunk、branches、tags.这点大家应该都很清楚的,而三个目录分别有着怎样的区别,何时何种情况下使用哪一个目录也许是大家不太清楚的。
    第一,trunk是主分支,是日常开发进行的地方。
    第二,branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。
    第三,tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。
【SVN—分支使用】
    在开发的过程中,使用分支的场景主要包括以下两种:
    1.要对某一个模块做重大调整,而不想别人打扰你或你不想打扰别人的工作,因为你修改的内容比较多,在没有完全改好并测试过之后就提交的话,别人更新后的程序就用不了了,但是如果你一直不提交,等到你完全改好后再提交,那svn的版本管理的作用体现在哪里?通过分支可以避免这个问题。
    2.主干已经开发完成,要进行发布,那把主干复制到分支,然后分支主要进行bug的修改和完善,而主干继续进行新特性的开发。比如我们要对框架进行升级工作,我们在目前的主干开发了差不多的时候,就可以准备发布1.0版本了,那我们把主干的复制到一个叫版本1的分支,在修复测试、发布1.0版本的同时,主干继续进行2.0的开发工作。当分支有bug修复的时候,同步到主干。
    像我们这个项目,就属于第2种情况了,主干完成的差不多,发布出一版,而各个模块在分支的目录下修复bug,然后将其同步到主干。
【SVN—创建分支】
    打开要创建分支的文件,可以是一个目录,也可以是一个文件,在该文件上右键点击,如图:
        
    选择“分支/标记”菜单,打开复制界面,如下:
        
    在“到URL”选择框里,填写要分支的路径,下一步,选择创建分支的版本:
        
   默认选择“HEAD修订版”就可以了,就是svn上最新的版本。下一步,提交更改:
    Svn的分支和标签操作都是复制一份副本。可能有人觉得,如果创建太多分支的话,不停的复制,服务器会不会太多东西了,负荷太重了,这个大可放心,svn的复制操作并不是真正的复制一份同样的数据,而是一个“浅复制”,它只是创建了一个链接而已,一个到主干的 连接。在你对分支没做任何修改之前,分支都只是一个链接,当你对分支的文件作了修改后,该文件在分支那才会真正的创建一个文件。
    至此,分支已经创建完毕。
【SVN—编辑分支】
    既然划分了主干和分支,那么我们后期的开发任务都是在各自的分支上进行的。刚听到这个变更,心里想的都是负责人又做了什么变更,他一改东西,我们下面的这帮开发都要跟着变,所以有时候挺烦他们改来改去的。没办法,我们开发又重新检出branches下面的代码继续开发了。
    当时我们还讨论了怎么弄,于是很将就地把之前工作空间的主干代码给删了,重新下分支里的代码。从网上看完一些使用教程之后,总结得出:我们真的是不会使用SVN,我们的做法真的很将就,不正确,也很不明智。其实,要想编辑分支的代码,应该使用SVN中的“切换”。
    弹出的切换界面如下:
    在“至URL”选择框里,选择刚创建的分支。其他的选项默认。点击“OK”,完成切换操作。此时,本地的peoject目录已经切换到分支,而不再是主干了,当你修改提交时也是修改分支的文件。
【SVN—合并分支到主干】
    当你本地修改完文件并提交到分支后,下一步就是要同步到主干去。在同步到主干之前,确保本地的文件都有提交了。用“切换”的方法,切换到主干,然后用“合并”的方法:
      
    弹出如下的合并界面:
    分支有修改的文件的情况下,主干就会有对应的标记,然后直接提交主干下的文件即可。
    至此,整个svn的分支与合并的操作已完成。
【SVN—使用小感】
    到这个项目组两个多月的时间了,因为项目进度紧张,开发任务多,很多东西,项目负责人都是说有什么问题,就找XXX解决一下,不要因为自己想学习些东西,研究点东西而耽误了任务的完成。于是,好像已经习惯了各种问题找对应的人帮忙,也不再自己去研究怎么用,怎么写,因为找个人答案就有了。
    但从昨天更换了SVN目录这个事情来说,其实,比我们来的时间长的开发其实就站在了一样的位置上了,他们也不清楚怎么使用SVN的主干和分支功能。找了个人来我电脑上帮忙合并代码到主干上去,他没成功,说了句:你这里的合并怎么这么麻烦,他电脑上的合并点个按钮就可以了。
    可是今天,我自己查了查怎么使用SVN上的合并与分支,就成功了,而且还意识到了之前不正确的使用方法,其实不是我电脑上的工具问题,而是没有用过,不会用的问题。在外面真的和在家里不一样,特别是像遇到这样的项目组,解决问题的习惯和能力都会渐渐失去的。但我一定不会让自己发现问题、解决问题的习惯和能力失去的。

0 0