1、开发中的需求

  • 备份
  • 代码还原
  • 协同修改
  • 多版本项目文件管理
  • 追溯问题代码的编写人和编写时间
  • 权限控制

2、版本控制简介

版本控制(Revision control),最初来源于工程设计领域,是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统

Subversion是一款实现版本控制的工具软件,称为版本控制器,简称SVN

3、Subversion的优点

  1. 目录版本控制:可以追踪整个目录树的修改
  2. 原子提交:提交要么完全进入版本库,要么一点都没有
  3. 版本控制的元数据:每个文件和目录都有一组附加“属性”
  4. 可选的网络层:使用HTTP的变种协议WebDAV/DeltaV通讯
  5. 一致的数据处理:对于文本和二进制文件具备一致的操作方式
  6. 高效的分支和标签:建立分支与标签只是复制项目,类似于硬链接

4、SVN的工作原理

采取客户端/服务器模式,服务器的版本库中保存项目文件的各个版本,程序员在本地电脑上保存一个工作副本,支持将本地副本更新到服务器端的最新版本,后面的更新不会覆盖前面的更新,而是一个新的版本,也可以将本地副本恢复为服务器端保存的某一个历史版本。

image-20210909161751300

5、SVN基本操作

  1. 检出(checkout):将服务器上的项目下载到本地,参与开发第一步,只需执行一次
  2. 更新(update):将本地文件更新为服务器端的最新版本,上班时或修改公共文件之前执行一次
  3. 提交(commit):将本地修改提交到服务器端,下班前或每实现一个功能、完成一个模块时执行一次

6、Subversion安装与配置

安装服务端程序

Setup-Subversion-1.8.9-1.msi

已经自动配置好了环境变量

测试是否安装成功

image-20210909164112254

配置版本库

Subversion将文件数据信息保存到版本库中进行管理

新建一个文件夹放OA、CRM、ERP等项目

image-20210909170103376

创建版本库

image-20210909170428445

版本库目录结构

image-20210909170455959

启动服务器

  • 命令行方式

image-20210909171739094

-d 表示后台执行
-r 表示版本库根目录

验证服务是否启动

打开新的命令行窗口,netstat -an查看3690端口是否被监听

image-20210909172032138

关闭服务器启动的命令行窗口后,服务器就停止了

  • 注册为Windows服务

让SVN服务随系统一起启动

==以管理员方式启动命令行==

image-20210910085725535

C:\Windows\system32>sc create MySVNService binpath= "D:\Program Files (x86)\Subversion\bin\svnserve.exe --service -r D:\javaDevelopTools\SvnRep" start= auto depend= Tcpip
[SC] CreateService 成功

C:\Windows\system32>

注册windows服务需要执行文件sc.exe,不是svn的命令

注意:==等号左边没有空格,右边有一个空格==

D:\javaDevelopTools\SvnRep			可以为多个项目服务
D:\javaDevelopTools\SvnRep\CRM		只能为一个项目服务
根据需要自行切换项目

查看创建的MySVNService服务

image-20210910090355201

image-20210910090346303

启动服务

image-20210910091122578

查看监听的端口

image-20210910091156028

停止服务,删除服务

image-20210910091326690

客户端操作

服务器是启动状态的

在工作目录取出指定的OA系统,在Jerry文件夹中检出

image-20210910103526777

就会有和服务器端进行交互的信息

image-20210910103618792

新建一个文件

image-20210910103901993

提交该文件,提交失败(需要投名状)

image-20210910104030082

将该文件加入版本控制

image-20210910104402688

再次提交,需要添加提交的信息说明

image-20210910104508893

添加后提交

image-20210910104636679

修改版本库中的权限

image-20210910104810552

将匿名权限的注释关闭,改为可写的权限,保存

image-20210910104906988

提交

image-20210910105030119

在Tom文件夹检出

image-20210910105331331

image-20210910105429688

Tom修改该文件

image-20210910105616401

提交

image-20210910105707581

更新Jerry中的文件

image-20210910110045557

7、在Eclipse中使用SVN

复制插件的安装包到eclipse的dropins目录

image-20210910111717668

也可以在线安装

image-20210910111826250

重启eclipse

image-20210910111852842

查看是否安装成功

image-20210910112043224

image-20210910112051500

组长将项目上传到SVN服务器使用

新建一个类

image-20210910142228774

将这个项目上传到SVN服务器

image-20210910142328248

image-20210910142423866

创建SVN服务器资源地址

image-20210910142704118

填写SVN服务器的地址,指定到了OA

image-20210910142754063

image-20210910142826207

切换到同步视图,将项目中的哪些文件上传

image-20210910142934872

这里上传整个项目,点击提交

image-20210910143059551

填写日志,点击ok

image-20210910143209395

回到项目

image-20210910143354289

查看SVN服务器上的文件

打开一个新的视图

image-20210910143613990

image-20210910143711482

上传Web项目时,build文件夹中的编译内容不包含进SVN服务器,检出时也不需要build文件夹

image-20210910145232355

组员从SVN服务器检出

从另一个工作区打开eclipse

import

image-20210910145757253

image-20210910145824703

创建资源库地址

image-20210910145959252

image-20210910145927991

image-20210910150015569

image-20210910150033644

忽略build文件夹

image-20210910151515521

提交

image-20210910151943221

填写日志

image-20210910152004669

更新

image-20210910152033168

仓库目录分析

image-20210910152423841

8、冲突

Jerry修改了代码并进行提交

image-20210910154409795

Tom未更新就进行了修改并提交

image-20210910154642519

发生冲突

image-20210910154631196

产生冲突的原因

image-20210910154950936

此时Tom进行更新

image-20210910155049328

image-20210910155259088

产生的几个新文件

image-20210910155421770

自己的

image-20210910155438954

冲突之前服务器的

image-20210910155459291

发生冲突时服务器的版本

image-20210910155532387

解决冲突

image-20210910155634425

修改左边视图,保存

image-20210910155808241

标记解决

image-20210910155915157

提交

如何减少冲突

在修改一些公共文件时先进行更新,在最新版本上进行修改

9、权限

打开配置文件

image-20210913085719200

修改配置文件

image-20210913085647408

打开passwd文件,新建用户

image-20210913090141059

打开authz文件设置具体权限

image-20210913091223690

测试提交修改后的代码,需要用户名和密码,cheshi用户可以检出

10、代码还原

需要修改配置文件中匿名用户为none

anon-access = none

image-20210913093717029

获取内容

image-20210913093829792

提交

11、小乌龟客户端

安装后

image-20210913095018545

image-20210913095024539