SVN学习笔记
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN学习笔记相关的知识,希望对你有一定的参考价值。
注:该笔记来自于视频 黑马程序员SVN视频教程
SVN概述
为什么要使用SVN呢?要解决什么问题?
- 协作开发。
- 远程开发。
- 版本管理。
什么是SVN?
- SVN全称是SubVersion。
- SVN是今年来的版本管理工具。
SVN特点:
- 操作简单,入门容易。
- 支持跨平台(Windows、Linux、MacOS)操作。
- 支持版本回退功能。
获取SVN软件:
- 属于 C/S 结构软件(即既需要安装客户端也需要安装服务器端)
- 服务端下载地址:https://www.visualsvn.com/
- 客户端下载地址:https://tortoisesvn.net/downloads.html
常用命令
Checkout
:检出,本地没有项目,第一次时将项目从服务器上拉下来。Update
:更新,在本地已有项目的情况下,把本地代码更新为服务器代码。Commit
:提交,将本地项目代码提交到服务器上,更新服务器上的代码。
服务端安装
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
:该文件是配置文件。默认情况下,authz
和passwd
文件都是禁用的,如果需要使用,则需要在该配置文件中开启上面两个文件。
如果我们要开启权限控制,那么要做如下的操作:
- 第一步,注释掉
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服务端拉取项目代码,更新本地的代码。
以上是关于SVN学习笔记的主要内容,如果未能解决你的问题,请参考以下文章