svn 合并与分支

SVN分支与合并

一、        分支与合并的概念

二、        SVN分支的意义

三、        如何创建分支与合并分支

一、分支与合并的概念:

分支:版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上。这条线被称为分支。分支经常被用来试验新的特性,而不会对开发有编译错误的干扰。当新的特性足够稳定之后,开发品的分支就可以混合回主分支里(主干线)

合并:分支用来维护独立的开发支线,在一些阶段,你可能需要将分支上的修改合并到最新版本,或者将最新版本的修改合并到分支。

二、  SVN分支的意义:

简单说,分支就是用于区分开发版本与当前发布版本的。

   1 主干负责新功能的开发

    2.、分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发)

    3.、分支上修改的bug,经常性merge到主干上,尽量及时merge(避免大面积红色区域)。

    4.、只能分支往主干靠拢(merge),不能反向!

5.、直到下个新版本发布,该分支停止修改

三、  如何创建分支与合并分支:

1、首先要在你的版本库存里创建主干目录,通过版本库浏览器,如图1所示:

 

(图 1

2、输入版本库URL地址,如图2所示:

 

(图 2

3、进入版本库浏览器主目录,如图3所示:

 

(图 3

4、创建主干目录,如图4所示:

 

(图4

5、主干目录(trunck),如图5所示:

 

(图 5

6、把你要加入版本控制的文件加入主干,如图6-8所示:

 

(图 6

 

 

(图 7

 

 

(图 8

7、从主干里检出文件到你的本地工作副本上,如图9-10所示:

 

(图 9

 

 

(图 10

8、选择你要创建分支的工作副本,如图11所示:

 

(图 11

9、在“至URL”里填写版本库中要存放分支的目录,如图12-13所示:

 

(图 12

 

 

(图 13

注意:这时候工作副本对应版本库的路径仍为原来对应的主干的目录。

10、再从分支里检出内容到本地目录上,如图14-15所示:

 

(图 14

 

 

(图 15

11、打开刚从分支里检出的工作副本目录,修改里面的test.txt文档并提交,如图16-17所示:

 

(图 16

 

 

(图 17

注意:这时提交的修改只会提交到分支上,并不会更改主干上的内容。

12、选择从主干上检出的工作副本,选择合并,如图18所示:

 

(图 18

13、选择合并类型(合并类型在文档的最后有专门的介绍),如果19所示:

 

(图 19

14、选择合并选项(合并选项在文档最后有专门的介绍),如图20所示:

 

(图 20

 

15、在合并之前,可以先进行测试合并,如图21所示:

 

(图 21

16、测试合并成功后,点击“合并”按钮进行合并,如图22所示:

 

(图 22

17、合并完成后,打开test.txt文件,这时候可以看见文件的内容跟分支里的内容一样,并且文件上有红色叹号标记(说明已经修改过),如图23所示:

 

(图 23

18、在主干上提交修改就完成了合并,如果24所示:

 

(图 24

 

svn分支合并类型和深度的理解:

合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作副本的URL是相同的。

一、合并一个范围的版本

此类型应用最为广泛,主要是把分支中的修改合并到主干上来。在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本。合并的源URL填写的是要合并的分支的URL,待合并的版本范围如果为空,则指的是合并分支上所有的版本,即自从分支创建以来到分支当前最新版本的所有演变。如果只是选择其中一个版本,或者几个版本,那么就表示只是将制定的n个版本的变化合并到主干上。如果只是选择其中一个版本,那么表示只是选择那个版本的修改,之前或之后的修改将不被采纳。

二、复兴合并

复兴合并可以理解为是第一种合并类型的一种特例,在复兴合并中,主干可以理解为是自从开创分支之后没有任何修改,而分支是经过修改的,而且合并中分支是没有版本选择的。经过复兴合并,分支中所有的修改都会合并到主干中,合并的结果将使得分支和主干一模一样,从而可以删除分支。

三、合并两个不同的树

此类型与前两种类型不同,第一种类型可以选择分支合并的版本,主干不能选择版本;第二种类型是主干和分支都不能选择合并的版本;而这种类型则是无论是主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的某个版本进行合并。合并的时候以选择的分支版本为主,如果选择的主干版本与分支版本有不同的地方,合并时主干部分将被放弃。

起始URL:选择主干目录的URL(应当和当前工作副本的URL一致,这个是所谓的合并点)

结束URL:选择要合并的分支的URL

起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本,如果你不想将某些内容合并进主干的话,也可以选择一个合并点。

实例:

主干A95版本的时候创建分支B,此时两棵树都是95版本

1 我在分支B上增加文件test.txt,提交。此时版本库升级到了96版本;

2 我在A上选择合并类型1,合并分支最新版本,结果是把test.txt加入A

3 我在A上选择合并类型2,合并分支最新版本,结果同上;

4 我在A上选择合并类型3,合并分支最新版本,结果同上;

5 我在A上增加文件test2.txt,提交,此时版本库升级到了97版本;

6 我在A上选择合并类型1,合并分支最新版本,结果是把test.txt加入A

7 我在A上选择合并类型2,合并分支最新版本,结果是把test.txt加入A

8 我在A上选择合并类型3,主干选择当前97版本,合并分支最新版本,结果是把test.txt加入A,把test2.txtA删除;

9 我在A上选择合并类型3,主干97以前的版本,合并分支最新版本,结果是把test.txt加入A,而A中保留着test2.txt

将分支合并到主干上,首先需要在主干的工作副本下进行,合并的范围是从主干的上次合并的版本开始到分支上最新的版本结束,如果是第一次合并,则从主干创建分支的版本开始,所以每次合并要做好说明,在日志中体现,不然忘记了下次再合并就有点麻烦。其实,应当尽量避免一个分支合并多次,分支的作用一般为了解决bug,一旦bug对应结束了,分支的使命就结束了,以后再出现其他的问题,应当重新建立分支,这样就不会出现多次合并的问题了。

1、在目标文件夹上点右键,如要将“branches/工行版”分支的内容合并到主干上,则在“trunk”文件夹上点右键,选择“Tortoise-合并…”
2、在弹出窗口选择“合并一个版本范围”(常用选择)
3、点击“下一条”
4、在“合并的源URL”处选择要合并进来的分支地址,如:http://10.50.22.35:8080/svn/软件中心/project/branches/工行版
6、在“待合并的版本范围”处填入合并的版本范围,可点击边上的“显示日志”选择版本
7、点击“下一条”
8、合并深度选择默认的“工作副本”
9、“比较空白字符”、“忽略空白字符的变化”等选择用于对文本文件的比较
10、“测试合并”可在正式合并之前测试合并结果,比如是否存在冲突等
11、点击“合并”
12、若未发生冲突,可在合并后执行“提交”操作
13、若合并时发生冲突,通常可在弹出窗口选择“以后解决”,在本地副本中冲突的文件处将增加2个文件(对二进制文件)或3个文件(对文本文件)
14、手动解决冲突后,使用“Tortoise-已解决的”标记冲突已解决,然后执行“提交”操作 

补充:
--------------------------------------------
没有冲突的话,合并后应该在主干的这些修改过的文件上显示红色感叹号,那么你不就需要提交这个主干了吗? :-)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值