如何利用SVN合并代码

如何利用SVN合并代码,第1张

利用SVN合并

Subversion的版本库是一种文件服务器,但不是“一般”的文件服务器。Subversion版本库的特别之处在于,它会记录每一次改变:每个文件的改变,甚至是目录树本身的改变,例如文件和目录的添加、删除和重新组织;可见SVN可自动识别出开发者具体修改什么代码,在合并时,只要知道SVN版本号,它会自动找出修改过的代码,然后合并到最终目标文件中。因此使用SVN来合并代码具有合并质量高以及高效的特点。 SVN的合并有三种类型,如下图:

第一种类型:合并一个版本范围

该类型是根据SVN指定的版本号来合并,也是最灵活的一种合并方式,可以是主干合并到分支,或分支合并到主干;主要应用场景是把分支或主干里面的一部分修改同步到主干或分支中去;甚至支持不同库的两个分支,当然这两个分支要求是相同的目录结构。

第二中类型:复兴分支

把分支合并到主干上,这里会把所有分支的修改,都合并到主干中,如果只想合并一部分,不合适使用该类型;而且这种类型合并受限的条件比较多,如分支和主干必须是在同一个库,本地工作目录不能够包含有被修改过的文件等。

第三种类型:合并两个不同的树

把两个分支的差异合并到本地的工作目录;其实它也可以把分支的代码同步到主干中,只需要把合并的from指定为主干URL,to指定为分支URL, 而本地工作目录是主干。

利用SVN合并具体步骤

在上面的三中类型中,最常用最灵活的是第一中类型:“合并一个版本范围”,也是我用得最多的一种合并类型。下面以这个类型为例,来介绍合并的整个过程,假设是从分支合并到主干。对于另外的两种类型合并都差不多;这里就不一一介绍了。

1.把主干check out 到本地,并确保文件更新到最新状态

2.按照下图示打开合并对话框:

3.选择合并类型:

根据合并类型进行选择,这里的例子中是选择第一个类型,然后再点“Next”按钮。

4.填写SVN URL和版本号信息:

“URL to merge from”下拉框选择需要合并分支或主干,在例子中,选择的是分支v1.0;在“revision range to merge”文本框选择具体需要合并的SVN版本号,可通过“show log”按钮查看有哪些版本号。可选择具体的版本号,也可以选择一个区间的版本号,如4-7,表示从SVN版本号4-7的全部合并。如选择区间版本号,需按住shift键。输入各项信息后,再点“next”。

5.合并选项的选择

6.测试合并

在上面步骤中,直接点“test merge”按钮来测试合并结果。如果有冲突,则会有提示有冲突:

7.开始合并

在步骤6中,直接点击“merge”按钮将会开始合并, 如没有冲突时,合并后的对话框将是下面的截图:

8.处理冲突

合并后有冲突时,d出的对话框如下图,注意此时“resolved”按钮是灰色

点“edit conflict”按钮,将打开SVN的合并对话框,让开发者进行手工合并

通过手工合并后,合并后的代码将在下面窗口中显示,确认合并完毕,点工具栏上的第二个保存图标进行保存,并关闭当前合并的对话框;回到处理冲突的对话框中,会发现之前“resolved”按钮是灰色,现在变成可点按钮:

点“resolved”按钮,至此,当前的冲突已解决;SVN会继续合并后面的版本。

9.提交代码

合并完代码后,最后别忘记提交代码,同时要输入注释,方便日后追溯。注释参考格式如下:从[分支或主干]合并代码到[主干或分支],版本号是从[开始的版本号]到[结束的版本号];

svn的标记为合并,代表改动是从其他项目合并过来的;

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。

如果两个人修改了同一个文件的同一个版本,在后一个人提交或update时肯定会提示发现冲突,分支合并也与此类似,也会提示发现冲突。

svn的分支合并,简单来说就是干了这么一件事情:拿svn库中你指定的某个文件夹的某个版本,和你指定的本地某个文件夹进行比较,然后将差异传到你的本地文件夹。

关于分支合并的使用,举例来说,一般按照svn的官方建议,一个svn库根目录下会被分成trunk、branches、tags三个子文件夹。其中,trunk是用于存放平时不断进行新增、修改、提交的代码。而当开发到一定程度,需要进行一轮测试时,为了避免开发和测试缺陷修复相互干扰,就从trunk拉个分支(复制一个当前镜像)到branches下的test001文件夹,所有的缺陷修复都在branches下的test001文件夹中进行修改、commit。当这轮测试和缺陷修复都完成了,再将test001文件夹中的所有修改合并到trunk中,这时分支合并功能完成的事情就是:比较svn服务器端test001文件夹的最新版本与你本地客户端trunk文件夹,如果没有发生冲突,就将test001中修改过的文件覆盖你本地客户端trunk中对应的文件,然后由你自己再次进行commit *** 作,如果发现冲突,就提示发生了冲突而合并失败。

理解了分支合并功能干了些什么,我想你自然就明白了和commit/update的区别。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11658786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存