首页 > 其他分享 >一步一步搭建Svn服务之主干分支操作

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

时间:2023-05-26 15:37:36浏览次数:44  
标签:Svn 主干 一步 本地 SVN 目录 服务端 分支

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

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

       习惯性在创建repository仓库后,再在刚才创建的仓库里面再创建trunk、branches、tags这三个文件夹。主要目的是:为了给项目各个阶段,各个版本归类、分阶段存储、并行开发。

trunk文件夹: 主干,我们一般把项目提交到此文件夹里面,在trunk中开发。

branches文件夹:分支,我们一般把那些需要打分支,但是有可能会修改的项目代码,打分支到此目录。

tags文件夹:分支,我们一般把那些阶段性(如迭代各期)的项目代码,打分支到此目录。

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

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

准备工作:

使用VisualSVNServer创建一个仓库

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

一步一步搭建Svn服务之主干分支操作_版本管理_02一步一步搭建Svn服务之主干分支操作_java_03

一步一步搭建Svn服务之主干分支操作_版本管理_04

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

创建完成,如下图所示:

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

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

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

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

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

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

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

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

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

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

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

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

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

使用TortoiseSVN检出SVN中的项目一步一步搭建Svn服务之主干分支操作_apache_16一步一步搭建Svn服务之主干分支操作_git_17

一步一步搭建Svn服务之主干分支操作_版本管理_18

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

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_20

SVN打分支:

方式1、先检出再打分支

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

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

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

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

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

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

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_25

一步一步搭建Svn服务之主干分支操作_svn_26一步一步搭建Svn服务之主干分支操作_版本管理_27一步一步搭建Svn服务之主干分支操作_git_28

       用TortoiseSVN查看SVN服务端主干目录的情况一步一步搭建Svn服务之主干分支操作_svn_29

       用TortoiseSVN查看SVN服务端分支目录的情况一步一步搭建Svn服务之主干分支操作_版本管理_30

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

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

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

       选择要备份的目录

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_33

       点击ok后,如果项目文件大的话,等一会再刷新一下客户端,就可以看见打的分支了。一步一步搭建Svn服务之主干分支操作_java_34

合并分支:

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

没有冲突

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

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

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

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

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

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

模拟产生冲突

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

1、在主干中修改操作

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

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

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

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

2、在分支中修改操作

       偷个懒,就直接使用TortoiseSVN中的Repo-browser修改一步一步搭建Svn服务之主干分支操作_java_44

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

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

3、在本地主干目录中Merge

一步一步搭建Svn服务之主干分支操作_版本管理_47

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

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_51

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

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_55

一步一步搭建Svn服务之主干分支操作_版本管理_56

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

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

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_59

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

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

5、退回

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

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

切换分支:

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

1、切换分支

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

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

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

2、清空SVN分支目录

       为了演示,我把分支目录中的所有文件清空,效果如下:一步一步搭建Svn服务之主干分支操作_apache_66

3、清空本地工作目录

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

一步一步搭建Svn服务之主干分支操作_版本管理_67

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

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

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

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

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

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

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

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

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

一步一步搭建Svn服务之主干分支操作_版本管理_73

一步一步搭建Svn服务之主干分支操作_版本管理_74

开发中多分支操作流程:

对于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,目录,服务端,分支
From: https://blog.51cto.com/51power/6356735

相关文章

  • 一步一步搭建Svn服务之VisualSVN扩展在线修改密码功能
    一、修改密码原理要实现客户端修改密码,其实就是通过apache的cgi模块去实现,就是把数据提交到那个指定的地址。本次操作需要用到ApachePasswd包,网上有很多apachepasswd的包,但是用了之后发现无法重启服务了,所以要找符合当前VisualSVN版本的包。我准备的附件在VisualSVN4.2.1和VisualS......
  • 一步一步搭建Svn服务之TortoiseSVN基本操作
        SVN作为源代码文件版本管理的工具,在日常项目中,经常使用到。没有使用过SVN的用户,经常不知道如何操作。这篇文章主要介绍了客户端TortoiseSVN基本操作(图文教程),需要的朋友们下面随着我来一起学习吧。一、导入本地项目到SVN    svn中默认是没有任何项目代码的,需要......
  • 【一步步开发AI运动小程序】八、利用body-calc进行姿态识别
    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序......
  • 效率&质量 华为CodeArts助力生态伙伴在软件时代先人一步
    ChatGPT大火的现状,告诉我们这个世界正在加速向AI时代演进。智能时代是数字世界,软件将无处不在。“软件定义”是新一轮科技革命和产业变革的新特征和新标志,已成为驱动未来发展的重要力量。“工欲善其事,必先利其器”。当软件变得越来越重要,做软件的工具也在愈发凸显其重要性。「No.......
  • 【SVN异常】svn更新时,出现不知道这样的主机的解决方案
    今天正在更新项目时,突然出现不知道这样的主机的错误,尝试了几种方法,记录一下:错误如下图所示:问题原因:没有和服务器在同一局域网,一般是未启动SVN服务器或者本地断网导致。首先先检查网络连接问题!解决方法:Cleanup该项目文件夹,清理缓存。到项目所在目录,右击鼠标,点击cleanup或者清理出......
  • svn: E200009: Commit failed (details follow)/both sides of the move must be comm
    今天在提交SVN的时候发生了如下错误,分析了一下原因,试了好几次才找到解决方法,失败原因如下:svn:E200009:Commitfailed(detailsfollow):svn:E200009:Cannotcommit'G:\jiaoyu\src\main\resources\templates\www\xgwy\company\company_content.html'becauseitwasmovedfr......
  • 智慧黄河:实现流域智能化管理的关键一步
    智慧黄河是指利用信息技术、物联网、大数据等先进技术手段,对黄河流域进行智能化管理和综合治理的概念。通过数字化、网络化、智能化的手段,实现对黄河流域的监测、预警、调度和管理,提升黄河流域的生态环境保护、水资源利用效率和灾害防控能力,推动黄河流域的可持续发展。 在智慧......
  • SVN commit:remains in tree-conflict错误的解决办法
    昨天在提交一个新类包的时候,出错了,重新提交了几次也不行.Abortingcommit:‘C:/workspace/MyWork/src/org’remainsinconflict由于是新第一次提交,感觉上应该是没有问题的.最后上网找了一下,发现了解决办法.Eclipse中的解决办法右击工程目录–>team–>ShowTreeConflict......
  • 全栈工程师的第一步
    全栈工程师的第一步记得在大学到时候,上计算机课觉得最有挑战的,就是做个一个个人主页。相对写个WORD文档、写个C语言程序,个人主页也是最有意思的一个主题。最开始的是用html标签方式来实现,用table来进行各种排版,丑得可见一斑。后面技术发展演进,大量的使用了html+css+js,再往后就衍生......
  • SVN 导出改动差异文件
    目录SVN导出改动差异文件应用场景/背景介绍具体操作方法SVN导出改动差异文件应用场景/背景介绍当然下面的两个场景介绍可能用分支管理都会有不错的效果,或者更优,只是记录一下思路,用什么还是看大家个人爱好啦在开发过程中偶尔会遇到有bug不知道具体问题出在哪,需要一步步删......