本节和大家学习一下SVN分支与合并的相关内容,主要介绍一下合并以及SVN合并分支应注意的问题,欢迎大家一起来学习SVN分支与合并方面的知识。
SVN分支与合并
合并
合并包含两点,首先两个版本库树比较,然后将区别应用到本地拷贝。
这个命令包括三个参数:初始的版本树(通常叫做比较的左边),最终的版本树(通常叫做比较的右边),一个接收区别的目标拷贝(通常叫做合并的目标)。
一旦这三个参数指定以后,两个目录树将要做比较,比较结果将会作为本地修改应用到目标工作拷贝,当命令结束后,结果同你手工修改或者是使用svnadd或svndelete没有什么区别,如果你喜欢这结果,你可以提交,如果不喜欢,你可以使用svnrevert恢复修改。
合并的工作是把主线或者分支上合并范围内的所有改动列出,并对比当前副本的内容,由合并者手工修改冲突。如果当前工作副本是主线的,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主线上的改动
(1)主干合并到分支
看一下SVN分支与合并中主干如何合并到分支。如果是需要将主线的改动合并到分支上,需要在分支的工作副本下进行合并,合并的范围是需要从主线上上次合并的版本到当前主线上***的版本,如果主线和分支都修改了相同的文件,合并后会出现冲突,然后解决冲突,如果主线修改但是分支没有修改,则主线上合并的变更内容会增加到当前副本中,提交,如果是***次合并,则起始版本号是上次建立分支的版本号
(2)分支合并到主干
如果是需要将分支的改动合并到主线上,需要在主线的工作副本下进行合并,合并的范围是需要从分支上上次合并的版本到当前分支上***的版本,合并后会出现冲突(冲突的前提如上种情况),然后解决冲突,提交,如果是***次合并,则起始版本号是上次建立分支的版本号
SVN分支与合并中合并分支时很关键的一点
在使用TortoiseSVN对Subversion进行分支合并时,Merge界面上有两个选项:From和To。这两个选项应该如何设定呢?
对于合并的这操作,Subversion上对其有如下的解释:
引用
迷惑的主要原因是这个命令的名称,术语“合并”不知什么原因被用来表明分支的组合,或者是其他什么神奇的数据混合,这不是事实,一个更好的名称应该是svndiff-and-apply,这是发生的所有事件:首先两个版本库树比较,然后将区别应用到本地拷贝。
这个命令包括三个参数:
初始的版本树(通常叫做比较的左边),
最终的版本树(通常叫做比较的右边),
一个接收区别的工作拷贝(通常叫做合并的目标)。
一旦这三个参数指定以后,两个目录树将要做比较,比较结果将会作为本地修改应用到目标工作拷贝,当命令结束后,结果同你手工修改或者是使用svnadd或svndelete没有什么区别,如果你喜欢这结果,你可以提交,如果不喜欢,你可以使用svnrevert恢复修改。还有更详细的说明:
引用
为了表示你的分支上的修改,你只需要比较分支的初始状态与最终状态,在你的分支上使用svnlog命令,你可以看到你的分支在341版本建立,你的分支最终的状态用HEAD版本表示,这意味着你希望能够比较版本341和HEAD的分支目录,然后应用这些分支的修改到主干目录的工作拷贝。
其实使用这个功能后的过程是把To的版本和From版本进行对比,然后把之间的差异合并到当前的版本中。比如要把一个分支的修改全部给合并进来,From就应该选择主线创建了分支的那个版本,To就应该选择分支的Head版本。如果版本选择的不正确,比如说From选择了主线的Head版本,就会把所有分支和主线Head不同的文件都覆盖到主线上来,造成主线上修改信息的丢失。本节关于SVN分支与合并内容介绍完毕。
【编辑推荐】