一步一步搭建Svn服务之主干分支操作

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一步一步搭建Svn服务之主干分支操作相关的知识,希望对你有一定的参考价值。

        公司的项目越来越大,开发人员越来越多,项目中有不同的里程碑,也就是不同版本。软件开发的过程中,如果发现上一个版本有一个紧急BUG,并且需要立即发包修复。这个时候就进退两难,如果你做了版本管理,直接切换到上个版本开发就好了。

       在版本控制的系统中,我们经常需要对开发周期中的单独生命线作单独的修改,这条单独的开发生命线就可以称为Branches即分支。分支经常用于添加新的功能以及产品发布后的bug修复等,这样可以不影响主要的产品开发线以及避免编译错误等。当我们添加的新功能完成后可以将其合并到主干中。

       习惯性在创建repository仓库后,再在刚才创建的仓库里面再创建trunk、branches、tags这三个文件夹。主要目的是:为了给项目各个阶段,各个版本归类、分阶段存储、并行开发。
trunk文件夹: 主干,我们一般把项目提交到此文件夹里面,在trunk中开发。
branches文件夹分支,我们一般把那些需要打分支,但是有可能会修改的项目代码,打分支到此目录。
tags文件夹:分支,我们一般把那些阶段性(如迭代各期)的项目代码,打分支到此目录。

本次示例的软硬件环境为:sqlserver2019、VisualSVNServer、TortoiseSVN。

       下面是以TortoiseSVN客户端,介绍分支的使用的,依然是图文并茂,都是我一手操作后,留下的文档截图和注释:

准备工作:

使用VisualSVNServer创建一个仓库

创建完成,如下图所示:

       注:右键目录或仓库,会出现拷贝连接SVN的URL的选项。

把本地项目代码上传到SVN服务端的主干中

       来到你本地的workspace,找到你的项目。

       查看SVN服务端主干目录内容

使用TortoiseSVN来查看一下SVN中的内容

       在你本地电脑桌面空白处,右键操作

使用TortoiseSVN检出SVN中的项目

       查看从SVN下载到本地的文件夹

       此处演示的是我的桌面路径,各位操作时要注意此处,路径不是写死的。

SVN打分支:

方式1、先检出再打分支

       找到你本地桌面下载的文件夹,右键操作

       分支创建完毕,再去看一下

       在某一个枝干上的操作,其作用范围就是其自身,并不会影响到其他枝干。这里说的是一般操作,分支合并等情况除外。实战操作一下,详细步骤如下:

在本地DataX文件夹中,增加一个lipengfei.txt,然后SVN Commit到SVN服务端。

       用TortoiseSVN查看SVN服务端主干目录的情况

       用TortoiseSVN查看SVN服务端分支目录的情况

       在主干上增加的lipengfei.txt,在分支的目录中并没有,说明枝干之间不会发生干扰。

       所以,打分支之前,要保证本地的和服务器上是一致的。打分支之前,一定要做SVN Update和SVN Commit。

方式2、Copy to的方式打分支

       选择要备份的目录

       点击ok后,如果项目文件大的话,等一会再刷新一下客户端,就可以看见打的分支了。

合并分支:

       合并分支,就是选择目标分支合并到当前所处分支。可以合并文件也可以合并整个文件夹,看自己的需求。

没有冲突

模拟产生冲突

       现在主干和分支中的代码是一模一样的

1、在主干中修改操作

在本地的DataX目录中,修改lipengfei.txt,并SVN Commit到SVN端主干中

2、在分支中修改操作

       偷个懒,就直接使用TortoiseSVN中的Repo-browser修改

3、在本地主干目录中Merge

       冲突已经解决,已经合并完毕了。Merge合并之后,只是在本地的当前枝干发生了变化,而在服务端SVN中的当前枝干还是合并之前的。合并之后确认没问题后,还需要commit到服务端SVN,以保证其他同事能拿到最新的代码。

4、最终结果提交到SVN服务端

5、退回

       如果发现合并之后,还有问题,那么可以回退

切换分支:

       前面的分支,都是我由主干复制出来的,在SVN仓库中可以看到分支。但是在你的本地目录上,看不到新建的分支情况。如果要把你的文件更新作用到的分支上,你必须做"切换分支"操作。这样你的本地文件就和SVN服务端指定的分支目录关联上了,虽然这时本地目录上看到的文件名仍然为旧的文件名,但是你更新或者提交的话,全是对SVN服务端指定的分支目录操作了。

1、切换分支

2、清空SVN分支目录

       为了演示,我把分支目录中的所有文件清空,效果如下:

3、清空本地工作目录

       把本地工作目录中,除了.svn目录外的其它文件,全部删除。

4、在本地工作目录中操作

       在本地工作目录中,创建一个lipengfei_new.txt文件,然后做 SVN Commit操作

5、把本地文件提交到SVN服务端

6、查看SVN服务端分支目录情况

开发中多分支操作流程:

对于branches、tags、trunk这三个目录,并不是subversion必需的,而是长期工作过程中的一种习惯叫法,其使用流程如下描述:

       1、一般建立最初的repository时,就建好这三个目录。

       2、开发者每日的修改提交到trunk主干目录,主要包括:新功能、bug修正等等。

       3、当研发小组认为当前项目,已经做好发布的准备,就会把trunk中的项目代码拷贝到branches下的1.0目录中,这样1.0版本发布的代码就有了。

       4、研发工作是并行的,测试同事上面分支中发布的1.0代码,进行严酷的测试。同时研发的同事,在trunk目录中继续新的研发工作(如准备2.0)。测试人员在测试发布的1.0代码中,发现存在bug的话,错误修正需要来回运送代码,这是个反复的过程,当然这个过程有时候也会结束,就是分支已经是发布前的最终测试的代码。

       5、分支已经作了标签并且发布,当测试工作结束了,branches下的1.0目录作为引用快照,已经拷贝到tags下的1.0.0目录,这个标签被打包发布给客户。

       6、分支多次维护,假如当前trunk中的版本2.0版本,bug修正继续在branches下的1.0目录中操作,如果积累了足够的 bug修正,管理部门决定发布1.0.1版本:拷贝branches下的1.0目录中的内容,到tags下的1.0.1目录中,标签被打包发布,这样1.0.1版本发布的代码就有了。

总结:

       1、工作中操作多个分支,在文件还未提交之前,确定把文件提交到哪个分支上,一定要选择切换分支操作。

       2、SVN分支的管理,实现不同作用的代码放到不同的目录中保存。因此你在取得新版本的时候会发现,不同分支的最新文件也会被获取下来。

       3、创建tag目录操作,相当于把当前的代码版本,复制一份到其他地方,然后以这个地方为出发点进行新的开发,与原来位置的版本互不干扰。

至此,SVN的主干和分支开发就演示完了。在上一篇文章中,主干和分支开发这部分讲得比较粗糙,今天特别来篇精讲吧,希望可以帮忙有需要的朋友们!!

 

 

 

 

 

 

 

 

 

 

 

以上是关于一步一步搭建Svn服务之主干分支操作的主要内容,如果未能解决你的问题,请参考以下文章

svn版本分支及冲突解决笔记

一步一步搭建Svn服务之TortoiseSVN基本操作

一步一步搭建Svn服务之TortoiseSVN日常操作

Eclipse 中svn的合并与同步

svn的主干和分支操作

#导入MD文档图片#一步一步搭建Svn服务之windows