SVN的搭建与使用
一、ubuntu安装svn
1、apt-get安装
命令:sudo apt-get install subversion
2、查看svn是否安装成功
命令:svn
3、创建SVN目录(/home/sxk)
命令:sudo mkdir svn
sudo mkdir repository
4、更改repository的权限(防止客户端访问服务器权限不够被拒绝)
命令:sudo chmod -R 777 /home/sxk/svn/repository
5、创建版本库
命令:sudo svnadmin create /home/sxk/svn/repository
执行完之后,会发现生成一些文件:
svn版本库目录结构详解:
路径 | 类型 | 作用 |
conf | 目录 | 存放版本库所有配置文件的目录 |
dav | 目录 | 供mod_dav_svn使用 |
db | 目录 | 版本数据存储目录 |
db/fs-type | 文件 | 版本库数据真实存储格式,SVN有fsfs和bdb两种存储格式 |
db/revprops | 目录 | 记录版本属性 |
db/revs | 目录 | 版本库数据存储真实目录 |
db/uuid | 文件 | 存储版本库唯一标识号,参考《svn版本库标识uuid简述》 |
db/txn-current | 文件 | 记录当前事务 |
format | 文件 | 存储一个整数的文件,此整数代表库层次结构版本 |
hooks | 目录 | 存放版本库勾子目录 |
locks | 目录 | 存储库锁目录,用来跟踪库的访问者 |
6、对db进行权限设置
命令:sudo chmod -R 777 db
7、设置访问权限
- 修改配置文件conf/svnserve.conf
#匿名用户可读
anon-access = read(可改成none,即不可读)
#权限用户可写
auth-access = write
#密码文件为passwd
password-db = passwd
#权限文件为authz
authz-db = authz
- 添加访问用户(用户stonegeek)
- 设置用户权限
admin = stonegeek //用户stonegeek属于admin权限组 @admin = rw //admin权限组的权限是读和写 * = rw 所有的组都具有读权限和写权限
8、启动与关闭svn服务器
- 启动命令/
- 关闭命令
二、windows使用TortoiseSVN
(SVN服务器IP:192.168.1.102)
安装地址:https://tortoisesvn.net/downloads.html
然后默认安装就ok
1、检出项目
桌面右击“SVN checkout”出现以下
输入我们再配置文件中设置的stonegeek用户以及密码,第一次检出失败:
修改authz配置文件如下:
命令:sudo vi /home/sxk/svn/repository/conf/authz
主要是添加了“[/]”,目的是赋予amdin组对repository/读写的权限(当然也可以根据需要修改和添加[]的内容)
重启SVN服务
重新检出,成功
在桌面会发现这么一文件夹,表示检出成功
2、导入项目
在桌面右击,点击TortoiseSVN->Repo-brower
然后在出现的窗口右侧右击Add folder,选择相应项目即可,导入后可以看到右侧出现项目
这个时候要重新检出,这样项目才能受SVN控制,
在上述界面项目上右击Checkout,出现以下界面,检出成功,
在桌面看到
说明此项目已经受SVN版本控制了(绿色表示当前文件没有被修改过)
3、提交修改
修改项目后,项目上会变成红色感叹号(红色表示已修改,蓝色表示不属于版本库的新文件)
此时应该右击项目SVN Commit,记得添加提交说明,方便以后查看
提交成功,如下界面
此时项目重新变为绿色成功标志,提交完成
对于增加新文件或者删除旧文件:
要及时检查文件状态,从版本控制中添加或者删除(右击文件->TortoiseSVN->增加或者删除),不然项目会提交不成功的
4、更新
在SVN服务器配置文件中添加一个用户shixiaokai,来配合更新操作
首先,让shixiaokai用户检出项目
其次,用户shixiaokai修改内容并提交
提交成功后,记得重新检出
此时用户stonegeek想要更新,直接在项目右键SVN Update就可以完成更新,然后查看内容发现更新成功
5、查看日志(提交信息)
选择查看日志可以看到团队里的人都做了什么,所以提交信息很重要
在项目右击TortoiseSVN->show log
从日志中可以清晰地看出:stonegeek导入项目,随后stonegeek修改了一次项目,shixiaokai接着也修改了一次项目。
6、版本回滚
当我们需要将项目回到之前的版本时
对项目右击TortoiseSVN->update to revision
ok之后,查看项目内容,发现已经回到version2了
三、IntelliJ IDEA集成SVN
1、配置SVN
之前我们已经安装过TortoiseSVN客户端了,不过我之前安装的时候没有勾选command line client tools这一选项,所以在安装目录的bin目录下并没有svn.exe,然后我又重新安装了一遍勾选上那一选项
随后就可以在idea中配置svn了
点击File->Settings->Version Control->Subversion,出现如下界面
在User command line client 一栏选到我们SVN客户端bin目录下的svn.exe,之后Apply Ok即可
2、检出项目
点击VCS->CheckOut from Version Control->Subversion
之后点击Checkout,输入身份认证就可以检出项目了
这样我们就从SVN检出项目到idea上了(红色的原因代表受版本控制)
3、提交项目
项目右击Subversion->Commit Direcotory
虽然有中文乱码,但是不影响我们看出SVN服务器上的version3版本跟我们现在修改完之后的是不一样的(多了一行通过IntelliJ IDEA修改)
点击Commit之后,需要我们认证身份(stonegeek)
认证成功之后,在编译器左下角会出现提交成功提示
四、eclipse配置SVN
1、配置SVN
两种方式
- 直接下载SVN插件,将其解压到eclipse的对应目录里
- 使用eclipse里Help菜单的“Install New Software”,通过输入SVN地址,直接下载安装到eclipse里
我们详细说一下第一种方式
首先下载SVN插件
下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240
下载后安装
将插件包features和plugins目录中的文件分别复制到Eclipse安装目录的features和plugins中,然后重启Eclipse,即OK
2、eclipse中SVN的使用
对于检出、提交、更新等操作,大家可以看一下这篇博客,个人感觉写的不错
https://blog.csdn.net/replace_/article/details/54890165
五、关于SVN服务器的说明
- 客户端SVN上传项目后,在SVN服务器端并不是简单的将上传的文件一个一个存放起来
- SVN服务器端版本库有两种格式,默认采用的是FSFS格式,将每次commit的内容增量方式存放起来,每一个增量包存放成1个文件,这个增量包包括了这次commit全部内容(这也是我们在服务器端存放该版本库的文件夹下找不到我们上传的某个项目的原因)
- FSFS
- BDB
- 这些数据存放在版本库的db目录中,里面的revs和revprops分别存放着每次提交的差异数据和日志信息等