临文乍了了,彻卷兀若无。这篇文章主要讲述一步一步搭建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服务端
文章图片
文章图片
【一步一步搭建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的主干和分支开发就演示完了。在上一篇文章中,主干和分支开发这部分讲得比较粗糙,今天特别来篇精讲吧,希望可以帮忙有需要的朋友们!!
推荐阅读
- 验证OSPF stub area和totally stub area对三类四类五类路由的过滤
- 改善网站用户体验设计以实现最大转换率的5条提示
- 如何聘请编程专家作家和专业人员
- MacOS优于Windows进行编程的3个原因
- 改善网站的五种方法
- 从在线资源中找到编程作业的帮助和支持的位置
- 如何在Symfony 4中从services.yaml检索特定和所有YAML参数
- 如何在Ubuntu 18.04中使用Keras,Tensorflow和Python 3实现图像搜索引擎
- 本地与云视频转码