SVN学习笔记

注:该笔记来自于视频 黑马程序员SVN视频教程

SVN概述

为什么要使用SVN呢?要解决什么问题?

  • 协作开发。
  • 远程开发。
  • 版本管理。

什么是SVN?

  • SVN全称是SubVersion。
  • SVN是今年来的版本管理工具。

SVN特点:

  • 操作简单,入门容易。
  • 支持跨平台(Windows、Linux、MacOS)操作。
  • 支持版本回退功能。

获取SVN软件:

常用命令

  • Checkout:检出,本地没有项目,第一次时将项目从服务器上拉下来。
  • Update:更新,在本地已有项目的情况下,把本地代码更新为服务器代码。
  • Commit:提交,将本地项目代码提交到服务器上,更新服务器上的代码。

服务端安装

参考 安装SVN服务端软件VisualSVN

SVN服务端配置

第一步,创建一个项目

  • 首先在SVN服务端(即安装了 Visual SVN 软件的电脑)创建一个共有目录 WebApp 作为项目目录。
  • 接着在 WebApp 目录下创建 Shop 文件夹,作为 Shop 项目的版本仓库。
    在这里插入图片描述
  • 新建版本仓库,需要打开 DOS 窗口执行命令。命令的格式是:svnadmin create 仓库路径。例如:svnadmin create D:/WebApp/Shop
    在这里插入图片描述
  • 如果 Shop 仓库配置成功,那么 Shop 目录下会有如下文件和文件夹:
    在这里插入图片描述

第二步,进行服务端监管

  • 我们必须对服务端进行监控,才能实时访问到仓库的变化。需要在 SVN 服务端执行命令,命令格式是:svnserve -d -r 仓库路径,其中 -d 选项表示后台运行,-r 选项后面跟着要监管的仓库路径。例如:svnserve -d -r D:/WebApp/Shop
    在这里插入图片描述
  • 然后我们就可以通过 svn://localhost或者 svn://ip地址 访问到指向的仓库了。例如在服务端电脑访问 Shop 仓库是 svn://localhost/Shop

第三步,权限控制

  • 默认情况下,SVN 服务端是不允许匿名用户上传文件到服务端的,所以必须更改项目的相关配置文件。
  • 打开仓库(如刚才创建的 Shop 仓库)下的 conf 目录下的 svnserve.conf 配置文件。
    在这里插入图片描述
  • 将第 19 行的 # anon-access = read 修改为 anon-access = write,然后保存退出。
    在这里插入图片描述

SVN客户端安装与配置

安装请参考:安装SVN客户端软件TortoiseSVN

接下来我们就要使用客户端软件连接服务端,检出(Checkout)项目了:

  • 首先在本地项目(即安装了客户端软件的电脑)目录下按鼠标右键,然后选择【TortoiseSVN】,然后选择【Repo-browser】
    在这里插入图片描述

  • 然后输入 svn://localhost,注意,localhost可以是具体的IP地址(这里之所以是 localhost 是因为SVN的服务端和客户端都在同一台电脑上,如果是其他IP地址则应该是SVN服务端的IP地址)。
    在这里插入图片描述在这里插入图片描述

  • 选择【svn://localhost】, 在出现的面板中选择【Checkout…】
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 最后在目录中出现一个隐藏文件夹.svn表示检出(Checkout)成功。
    在这里插入图片描述

TortoiseSVN使用详解

三大指令

  • 检出(Checkout)操作:①链接到SVN服务器端;②更新服务端数据到本地。注意:Checkout只在第一次链接时操作一次,以后如果进行更新操作请使用Update (更新指令)。

  • 提交(Commit)操作:提交本地项目代码到服务端。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 更新(Update):从服务端拉取代码文件到本地然后更新本地已有的项目代码。
    在这里插入图片描述

假如公司新来一个程序员张三,那么他需要做如下操作:

  • 第一步,检出操作,从服务端第一次拉取项目代码。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 第二步,对项目中的代码文件进行一些操作,然后提交到服务端。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

回到 demo 项目下,发现文件还是未更新的状态,所以我们需要更新到最新状态:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

图标集

提供了一些小图标,方便我们发现本地文件的状态。

设置图标集

我们可以在 TortoiseSVN 下的 Settings 中的 Icon Set 看到所有的图标。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

九大常见图标

在这里插入图片描述

  • normal:常规图标,当客户端文件与服务端文件完全同步时,显示该图标。
  • conflicted:冲突图标,当客户端提交的文件与服务端数据有冲突时,系统会显示该图标。
  • deleted:删除图标,当服务端数据已被删除,那么客户端会显示该图标。
  • added:增加图标,当我们编写的文件已经添加到提交队列,会显示该图标。
  • non-versioned:无版本控制图标,当我们编写的文件没有添加到上传队列时,会显示该图标。
  • modified:修改图标,当客户端文件有修改但未提交时,会显示该图标。
  • readonly:只读图标,当客户端文件以只读形式存在时,会显示该图标。
  • locked:锁定图标,当服务端数据已锁定,那么客户端文件将自动显示锁定图标。
  • ignored:忽略图标,当客户端文件已被忽略,不会被提交上传,会显示该图标。

忽略功能

我们并不是本地项目中所有文件都想上传到服务端的,有时候我们想要忽略一些文件(如idea的.iml配置文件)那么就可以使用忽略功能让它不被提交上传。步骤如下:

选择待忽略的文件或目录——>TortoiseSVN——>Unversion and add to ignore list——>文件名或目录名
在这里插入图片描述
关于忽略列表的几项说明:

  • README.md:忽略名为 README.md 的文件。
  • *.md:忽略所有后缀名为 .md 的文件。
  • README.md(recursively):这是选中目录才该进行的忽略操作,如果选择该项表示忽略名为 README.md 的文件夹及其子文件夹。
  • *.md(recursively):这是选中目录才该进行的忽略操作,表示忽略所有后缀名为 .md 的文件夹及其子文件夹。

版本回退

有些时候,软件的运行可能使开发者或使用者不满意,这时我们需要把当前版本退回到以前的某个版本。如果我们想要回退以前的版本只需要如下操作即可:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

版本冲突

在实际项目开发中,如果两个人同时修改某个文件就会产生版本冲突问题。

场景如下:张三修改了 README.md 文件后提交到了服务端,而李四也修改了 README.md 文件并且打算提交,但会提交失败,报错如下:
在这里插入图片描述
我们要利用SVN来解决版本冲突问题,步骤如下:

  • 先更新服务端数据到本地。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 接着删除除 README.md 之外其他三个文件。
  • 然后修改整合 README.md 冲突文件。
  • 重新提交数据到 SVN 服务端,即可解决版本冲突问题。

配置多仓库与权限控制

配置多仓库

在实际项目开发中,我们可能会同时开发多个项目,那么我们要如何进行项目监管呢?
在这里插入图片描述

前面通过 svnserve 命令进行仓库监管,只是监管了某一个文件夹,而不能同时监管多个仓库。但我们可以监管 WebApp 总目录来的达到监管所有仓库的目的。打开 DOS 窗口,输入命令。命令格式如下:

svnserve -d -r D:/WebApp

在这里插入图片描述
执行上面命令之后,我们就可以通过 svn://localhost 或者 svn://ip地址 来访问 D:/WebApp 目录了。

而如果想要访问 Shop 项目或者 Hello 项目,只需要输入 svn://localhost/Shop 或者 svn://localhost/Hello 即可。即在IP地址后面跟具体的项目名即可。
在这里插入图片描述

权限控制

如果要使用权限控制功能,则必须先开启权限功能。在每一个仓库中都有一个 conf 文件夹,该文件夹里有三个文件:

  • authz文件:该文件是授权文件,告诉哪些用户具有哪些权限。
  • passwd文件:该文件是认证文件,标识当前 svn 系统中某个仓库具有哪些用户以及相应的密码。
  • svnserve.conf:该文件是配置文件。默认情况下,authzpasswd 文件都是禁用的,如果需要使用,则需要在该配置文件中开启上面两个文件。

在这里插入图片描述

如果我们要开启权限控制,那么要做如下的操作:

  • 第一步,注释掉 svnserve.conf 文件中匿名用户的可读写权限。
    在这里插入图片描述
  • 第二步,开启认证文件与授权文件在 svnserve.conf 文件中。
    在这里插入图片描述
  • 第三步,编写 passwd 认证文件,定义相关用户名和密码。其中键名是用户名,键值是密码,中间用等号进行连接。
    在这里插入图片描述
  • 第四步,编写授权文件 authz,可以指定组名和该组下的用户列表,用户之间通过逗号进行分隔。然后为项目分配用户组并且为用户组分配权限。格式是:
    在这里插入图片描述
# 添加用户组
用户组名 = 用户1,用户2,..

# 为仓库分配用户组和指定用户组的权限
[仓库名:路径]
@用户组名 = 权限
* = r
  • 第五步,测试。再新建一个文件夹,然后检出 Shop 项目,再修改其中一个文件,再进行提交,发现需要输入用户和密码。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

SVN服务的配置与管理

因为现在的SVN监管服务是在DOS窗口启动的,但如果把DOS窗口关掉,那么SVN服务就无法使用了,我们希望系统能够自动管理,在电脑系统后启动后就自动启动SVN监管服务,不需要每次都手动启动。

配置自启动服务

我们可以通过命令配置让SVN监管服务开机自启动。命令格式如下:

#语法
sc create 服务名 binpath= "exe可执行文件绝对路径 [选项] [参数]" start= auto

#示例,创建svn自启动,监管WebApp文件夹中的所有仓库
sc create SVNService binpath= "E:\VisualSVN\InstallationFiles\bin\svnserve.exe --service -r D:/WebApp" start= auto

步骤如下:

  • 第一步,打开 DOS 窗口,使用管理员运行。
    在这里插入图片描述
  • 第二步,输入指令,创建服务
    在这里插入图片描述- 第三步,查看系统服务
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

创建批处理文件

我们不想每次都打开【服务】来开启SVN服务,那么可以通过批处理的方式来快速打开服务。常见服务操作命令如下:

  • 启动服务:net start 服务名称。例如,net start SVNService
  • 关闭服务:net stop 服务名称。例如,net stop SVNService
  • 删除服务:sc delete 服务名称。例如,sc delete SVNService

我们可以将上述命令封装到.bat批处理文件,然后直接双击.bat文件即可执行对应的命令。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在IDEA中使用SVN

实际在工作除了用 TortoiseSVN 之外,在开发Java项目中通常直接使用 IDEA 进行连接SVN版本控制,而非再单独安装 TortoiseSVN。

检出项目

如果是第一次从SVN服务端拉取项目,则操作如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

IDEA上的SVN操作选项

在这里插入图片描述在这里插入图片描述

提交项目

在这里插入图片描述

SVN账号设置

如果我们提交代码失败,则可能需要输入具有写权限的账号和密码。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

更新项目

我们可以从SVN服务端拉取项目代码,更新本地的代码。
在这里插入图片描述

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值