一步一步搭建Svn服务之主干分支操作
  Lb78AVwchy8f 2023年11月02日 64 0

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

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

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

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

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

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

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

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

准备工作:

使用VisualSVNServer创建一个仓库

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

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

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

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

创建完成,如下图所示:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用TortoiseSVN检出SVN中的项目


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

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

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

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

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

SVN打分支:

方式1、先检出再打分支

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

       选择要备份的目录

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

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

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

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

合并分支:

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

没有冲突

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

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

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

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

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

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

模拟产生冲突

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

1、在主干中修改操作

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

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

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

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

2、在分支中修改操作

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

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

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

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

3、在本地主干目录中Merge

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5、退回

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

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

切换分支:

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

1、切换分支

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

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

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

2、清空SVN分支目录

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

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

3、清空本地工作目录

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

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

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

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

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

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

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

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

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

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

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

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

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

开发中多分支操作流程:

对于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的主干和分支开发就演示完了。在上一篇文章中,主干和分支开发这部分讲得比较粗糙,今天特别来篇精讲吧,希望可以帮忙有需要的朋友们!!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  DF5J4hb0hcmT   2023年12月12日   31   0   0 服务器git
  3I1N9ysrcSyk   2023年12月08日   31   0   0 javahapi数据交换
  DF5J4hb0hcmT   2023年12月07日   50   0   0 javaArthas
Lb78AVwchy8f