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。
起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本,如果你不想将某些内容合并进主干的话,也可以选择一个合并点。
实例:
主干A在95版本的时候创建分支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.txt从A删除;
9、 我在A上选择合并类型3,主干97以前的版本,合并分支最新版本,结果是把test.txt加入A,而A中保留着test2.txt。
将分支合并到主干上,首先需要在主干的工作副本下进行,合并的范围是从主干的上次合并的版本开始到分支上最新的版本结束,如果是第一次合并,则从主干创建分支的版本开始,所以每次合并要做好说明,在日志中体现,不然忘记了下次再合并就有点麻烦。其实,应当尽量避免一个分支合并多次,分支的作用一般为了解决bug,一旦bug对应结束了,分支的使命就结束了,以后再出现其他的问题,应当重新建立分支,这样就不会出现多次合并的问题了。
svn 合并与分支
最新推荐文章于 2024-09-07 11:58:44 发布