如何利用svn合并代码

author author     2023-04-15     793

关键词:

利用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.处理冲突


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

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

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

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


9.提交代码


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

参考技术A 利用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.处理冲突

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

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

9.提交代码

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

如何在 Xcode 中使用 svn 合并冲突(文件 project.pbxproj)?

】如何在Xcode中使用svn合并冲突(文件project.pbxproj)?【英文标题】:Howtomergeconflicts(fileproject.pbxproj)inXcodeusesvn?【发布时间】:2011-01-0112:38:16【问题描述】:我们团队有两名成员。我们使用Xcode的SCM(使用SVN)来管理我们的源代... 查看详情

如何在SVN中从一个分支合并到另一个分支并再次返回(双向合并)?

】如何在SVN中从一个分支合并到另一个分支并再次返回(双向合并)?【英文标题】:Howtomergefrombranchtobranchandbackagain(bidirectionalmerging)inSVN?【发布时间】:2010-09-0906:24:53【问题描述】:使用svnmerge.py工具可以在分支之间进行合并... 查看详情

如何将 kdiff3 设置为 SVN 的合并工具

】如何将kdiff3设置为SVN的合并工具【英文标题】:Howtosetkdiff3asmergetoolforSVN【发布时间】:2011-06-1518:56:41【问题描述】:当SVN通知我冲突时,我希望能够使用kdiff3解决冲突。如何将其设置为默认工具?【问题讨论】:【参考方案1... 查看详情

svn建立分支和合并代码

1.SVN建立分支正确SVN服务器上会有两个目录:trunk和branches。trunk目录下面代码就是所谓的主版本,而branches文件夹主要是用来放置分支版本。分支版本是依赖于主版本的,因此建立分支版本时候,必须要在trunk文件夹操作才可以的... 查看详情

如何在svn系统中使用git

1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。也就是说自己机器上有一个git仓库。这和svn是不同的,svn是没有本地的仓库的。所以git是先提交到本地仓库,然后推送到服务器。而svn是直接提交到服务器。... 查看详情

svn建立分支和svn代码合并的操作方法

首先说下为什么我们需要用到分支-合并。比如项目demo下有两个小组,svn下有一个trunk版。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新... 查看详情

svn如何把主干上的修改合并到分支上来

情况是这样的,现在公司项目分布到全国,各省有相同模块,有不同模块,现在是把相同模块作为主干,不同模块作为分支,如果在主干修改后合并到每个分支上去同步。目前只是在分支上一个个把主干合并过来,能不能直接在... 查看详情

svnkit——svn二次开发背景和闲谈

开发背景:  简述现有流程:代码的合并、提交是以任务为最小单元的。例如A和B两个同学开发不同的任务,那就是两个任务号。合并的时候可能会先合并A的代码,在合并B的代码。  需求:SVN合并程序开发——一款能够满... 查看详情

Xcode 4.3 如何使用 SVN 合并来自两个开发人员的故事板更改?

】Xcode4.3如何使用SVN合并来自两个开发人员的故事板更改?【英文标题】:Xcode4.3howtomergestoryboardchangesfromtwodevelopersusingSVN?【发布时间】:2012-07-1114:13:11【问题描述】:我遇到了一个问题,即一个项目有多个开发人员在处理同一个... 查看详情

如何利用python批量合并excel?(代码片段)

...小技巧,也是之前有粉丝在后台进行提问的,即如何将多个pandas.dataframe保存到同一个Excel中。喜欢记得收藏、点赞、关注。注:技术讨论、资料获取,文末加入我们其实只需要灵活使用pandas中的pd.ExcelWriter()方法即... 查看详情

版本控制工具svn教程

...代码,又该如何处理?  所以较好的处理方式就是------利用版本控制(RevisionControl)工具。  利用版本控制的好处有:  可以备份多个版本,利于多个版本的控制(即使当前的 查看详情

svn合并分支到主干

分支库中单元测试通过的源代码要合并到主干,例如有一个开发中的代码branches->dev需要合并到主干trunk。步骤:第一个步骤:在本地副本上进行操作,选择主干上的源代码文件,右键选择tortoiseSVN菜单,... 查看详情

svn将主干的代码合并到分支上

...因为业务需要,在上个分支还在测试阶段,还没有和主干合并;  但是新的业务又急着开发,又在上个分支的基础上又打了一个分支   这样我们会遇到一个问题当合并代码的时候会出现很多的冲突,我们需要在主干上修 查看详情

如何将不同机器上的 2 个不相关的 svn 存储库合并到一个存储库中?

】如何将不同机器上的2个不相关的svn存储库合并到一个存储库中?【英文标题】:Howtocombine2un-relatedsvnrepositorieseachpresentonadifferentmachineintoonerepository?【发布时间】:2014-07-1809:12:35【问题描述】:我们在机器1上有两个svn存储库Repo-... 查看详情

Git:如何反向合并提交?

】Git:如何反向合并提交?【英文标题】:Git:howtoreverse-mergeacommit?【发布时间】:2010-12-2100:52:56【问题描述】:使用SVN很容易反向合并提交,但如何使用Git来实现呢?【问题讨论】:重复ReverttoapreviousGitcommit我不认为这就是问题... 查看详情

dotnetopenxml利用合并表格单元格在ppt文档插入不可见的额外版权信息(代码片段)

本文告诉大家如何利用Office对于OpenXML支持的特性,在PPT的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内容在开始之前,... 查看详情

dotnetopenxml利用合并表格单元格在ppt文档插入不可见的额外版权信息(代码片段)

本文告诉大家如何利用Office对于OpenXML支持的特性,在PPT的表格里面,通过合并单元格存放一些额外的信息,这些信息对用户来说是不可见的,但是进行拷贝表格等的时候,可以保存此信息内容在开始之前,... 查看详情

利用opencv的函数split()和merge()实现通道的分离与合并(代码片段)

利用OpenCV的函数split()和merge()实现通道的分离与合并可以利用OpenCV的函数split()实现通道的分离利用函数merge()实现通道的合并两个函数的使用很简单,所以这里就不详细介绍了。直接给大家C++和Python示例代码,大家... 查看详情