一杯清茶

统计

留言簿

Oracle SQL/PLSQL

PowerDesigner教程系列

Struts2.0

web开发

三人行

从事RCP开发的同行

工作流和权限设置

阅读排行榜

评论排行榜

svn

MyEclipse下SVN主干与分支的合并操作

一、分支的应用环境

1. 什么是分支?

分支是项目开发过程中,从项目中的某一版本独立出来的一个单独模块,它可以 包含项目的全部组成成分,也可以仅仅包含其中某一个部分。

2. 分支的应用

a. 多个版本项目的维护

当一个项目存在多个不同的版本时,有可能项目的各个版本主体代码都相同,只有一些少量的部分存在区别,此时如果把每个版本都用不同的SVN版本库进行管理显得比较臃肿,而且也会造成SVN服务器文件存储空间浪费,而如果保留一个项目的主体,对不同的版本创建不同的分支,则仅仅需要关注那些各版本间有差别的文件,易于SVN版本库的维护,同时当完成一个通用功能时不需要更新多个版本的SVN库,对于开发效率也有提升。

b. 在新版本未完善时对旧版本的维护

在项目上线后,当用户发现正在使用的版本中存在某些急需修改的问题,而新的版本推出时间不能满足用户需求,则需要创建一个旧版本的分支独立在主干之外,主干继续新版本的开发,而分支则关注于用户所提出问题的修改,这样既不影响问题的修改,也不影响新版本的开发进度,当新版本完成后再将分支合并到新版本,同样也不会留下有隐患的问题。

c. 多个开发人员协同开发的工作模式

在一些协作开发的团队中,采取每个开发人员都为自己的模块建立一个分支的开发模式,这样代码的主体存在于主干中,开发人员只需要关注自己的模块,且可以放心的从主干更新别人的修改和提交自己模块的代码到分支,而不用担心引起任何冲突,最后将各个分支一起合并到主干。

二、创建分支

SVN服务器上创建一个新的版本库,包含基本的版本库目录(trunkbranchestags)。

新建项目(demoSvn)并提交到SVN的主干trunk目录下。

1. 为项目demoSvn创建分支

打开MyEclipseSVN库浏览视图(SVN Repositories),找到demoSvn提交的版 本库,在SVN的主干目录trunk 上右键 -> new -> Branch 创建分支。

点击【OK】创建分支,创建好的分支目录结构如下:

 

  

2. 也可以为项目的某一部分创建分支

demoSvnWebRoot下新建目录demo,并提交至SVN的主干。切换至SVN库 浏览视图为demo目录创建分支,在demo目录上右键 -> new -> Branch 创建分支

 

 

创建demo目录的分支结构如下所示:

 

3. 同时还可以对分支创建分支,操作与以上类似,不在赘述

  

三、对分支的操作

1. 直接将分支作为一个项目import到本地进行修改,然后提交。

1) 将分支brhMain作为一个项目导入本地工作区间。

 

2) 在导入的项目demoBrhMaindemo目录下新建JSP文件brhMain.jsp

 

 

3) 将项目demoBrhMain的本地修改提交至SVN后,查看版本库,发现分支brhMaindemo目录下多了一个brhMain.jsp文件,由此实现对分支的修改。

 

2. 使用switch操作实现对分支的修改

switch操作将当前工作区间所选目录的文件同步为所切换的分支的文件,并且该目 录下的版本由分支进行管理。switch操作与update操作功能类似,只不过update 操作只能固定的从某个版本库进行更新,而switch操作可以自由的选择版本库。

在项目demoSvn中使用switch操作实现分支brhDemo的修改:

1) demo目录上右键 -> Team -> Switch,此操作将本地demo目录的文件同步 成brhDemo分支的文件,demo目录的版本库切换为brhDemo

2) 选择将brhDemo分支同步至本地demo目录

3) 本地工作区间的demoo目录切换为brhDemo分支后,可以看到在demo目录 及其下的文 件右下角有一个小箭头,如下:

4) 此时工作区间的dmeo目录已切换,可以在demo目录下新建MyJsp.jsp,然后 提交,查看提交后的SVN版本库,发现MyJsp.jsp已提交至brhDemo分支 下,而不是提交到trunk主干的demo目录下,如下:

5) 此时对demo目录下的修改,提交后都会更新到brhDemo的分支目录中去,而 不会对主干的demo目录有任何影响,若想对主干的demo目录做出修改, 只需再进行switch切换回主干的demo目录即可

注意:

需要进行switch切换的目录(或整个项目)需要有一个与之有关联的分支。

进行switch切换时,若切换的不是全部项目,而是项目下的某一个模块,需要考虑到该某块内部可能会有对模块外文件的依赖,本地工作区间中那些依赖的文件可能与分支中依赖的文件有所差异,当该模块切换至分支时,可能导致本地项目出现错误。

四、主干与分支的合并

1. 合并操作

1. 主干于分支的合并流程

2. 将分支合并到主干的操作就是将需要合并到主干的分支数据同步到本地工作区间,再由本地工作区间提交到主干版本库。

3. 在上文中已在项目demoSvn创建目录demo,并已创建demo目录的分支brhDemo,也已经介绍过如何对分支brhDemo进行操作,现在通过将对分支brhDemo的修改合并至demo实现从分支到主干的合并。

将分支brhDemo的修改合并至主干:

1) demo目录上进行switch操作,将分支brhDemo的文件同步至本地工作区间,在switch后的demo目录中新建JSP文件demo.jsp,然后提交。检查SVN版本库,发现demo.jsp已提交至brhDemo下,而并未提交至主干的demo目录下。

2) 将本地demo目录通过switch切换同步回主干的demo目录,检查发现本地demo目录下并无刚刚创建的demo.jsp,此时已实现对分支的修改,并提交至brhDemo

3) 1),2)两步参考上文中对分支的操作,不再做图片说明。

4) 将分支的修改合并至本地工作区间,brhDemo的分支中含有demo.jsp文件,而本地的demo目录中没有该文件,先通过Merge操作将brhDemo中的文件与本地的demo目录合并(注意此操作与switch操作的区别,switch操作是将brhDemo中的文件完全同步至本地工作区间,且改变所切换目录的版本库)在demo目录上右键 -> Team -> Merge 

Ignore Ancestry】选项指是否忽略合并文件之间的祖先关联,勾选后不管合 并的两个文件之间是否有关联,都会进行比较然后合并,而不勾选的时候, 若两个文件没有关联则会直接删除主干上的那个目标文件,然后将分支的相 应文件覆盖。

Record Only】勾选后仅仅合并当前选择目录下的文件,不会递归的合并该 目录下子目录及其中文件。

选择将brhDemo分支合并至本地的demo目录。

5) 合并后查看本地工作区间,发现已将demo.jsp同步至本地demo目录。

  

6) 提交本地工作区间的更新,检查SVN版本库,发现主干的demo目录已和brh分支的文件完全相同,由此实现brhDemo分支到主干的合并。

7) 合并后主干和brhDemo分支中demo.jsp文件完全相同,若在主干和分支分别对demo.jsp进行修改并提交,则当再次进行合并时,可能会产生冲突,此时需要手动的处理冲突文件。

brhDemo分支和brhMain分支的文件同时合并至主干:

1) 本文采用的的SVN插件支持同时将两个分支合并至主干,操作步骤与将一个分支合并至主干类似,不再做图片说明,区别仅仅在选择分支时,需选择两个分支。

2) 将两个分支合并到主干的操作往往伴随许多冲突,个人建议在需合并大量文件时不建议此种合并方式。

 

2. 取消合并

1. 未提交至主干时,取消本地工作区间的修改

在要取消的目录上右键 -> Tean -> Revert

五、参考

http://www.subversion.org.cn/svnbook/

六、说明

本文截图均在MyEclipse10.6SVN插件下完成,视工具版本不同略有区别。

posted on 2013-05-02 17:21 一杯清茶 阅读(360) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: