SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
一、服务器环境
操作系统:CentOS release 6.5 (Final)
内核版本:2.6.32-431.el6.x86_64
SVN-Server版本:1.6.11 (r934486)
二、安装SVN-Server
1、SVN-Server和SVN-Client下载地址
官网下载: http://subversion.apache.org/packages.html
SVN客户端TortoiseSVN :https://tortoisesvn.net/downloads.html
参考文档1:http://liqingbiao.blog.51cto.com/3044896/1831236
参考文档2:https://segmentfault.com/a/1190000003853810#articleHeader7
2、安装subversion
# yum -y install subversion
3、创建仓库
创建用于存储仓库的目录并进入该目录:
# mkdir /svn ; cd /svn
创建仓库:
# svnadmin create /svn/fansik/
以下关于/svn/fansik/目录的说明:
hooks目录:放置hook脚步文件的目录
locks目录:用来放置subversion的db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format目录:是一个文本文件,里边只放了一个整数,表示当前文件库配置的版本号
conf目录:是这个仓库配置文件(仓库用户访问账户,权限)
4、配置SVN服务的配置文件
# vim svnserve.conf
[general]
anon-access = none #使非授权用户无法访问
auth-access = write #使授权用户有写权限
password-db = passwd #用户密码文件
authz-db = authz #访问控制文件
realm = fansik repository # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错
5、配置访问用户及密码
# vim passwd
[users]
fansik = fanjinbao
user1 = fanjinbao
6、配置用户权限
# vim authz
[groups] #定义组
admin = fansik,fanjinbao #创建admin组,组成员为:fansik,fanjinbao
user = user1 #创建用户组,用户成员user1
[/] #定义访问目录
@admin = rw #admin组有读写的权限
@user = rw #user组有读写权限
*= #表示除了上面设置的权限用户组以外,其他所有用户都设置空权限,空权限表示禁止访问本目录,这很重要一定要加上。
备注1:版本库的目录格式如下:
[<版本库>:/项目/目录]
@<用户组名> = 权限
<用户名> = 权限
其中[]內容有許多写法:
[/],表示根目录及其一下的路径,根目录是svnserver启动时指定好的,上述实例中我们指定为:/svn/svndata([/]=/svn/svndata).[/]就是表示对全部版本设置的权限
[test:/],表示对版本库test设置权限;
[test:/svnadmin],表示对版本库test中的svnadmin项目设置权限;
[test:/svnadmin/second],表示对版本库test中的svnadmin项目的目录设置权限;
备注2:
权限的主体可以是用户组,用户或者*,用户组在前面要以@开头,*表示全部用户
权限分为:r ,w, rw和null ,null空表示没有任何权限。
auhtz配置文件中的每个参数,开头不能有空格,对于组要以@开头,用户不需要。
7、启动SVN-Server
# svnserve -d -r /svn/
注意:更改svnserver.conf时需要重启SVN服务,更改authz,passwd文件时则不需要重启服务
也可以在启动是指定端口号:
# svnserve -d --listen-port 3690 -r /svn --log-file=/svn/svn.log --pid-file=/svn/svn.pid
注:svnserve的进程可以启动多个
三、SVN的使用方法
1、导入版本库(/fansik目录要存在)
# svn import --force-log /fansik svn://192.168.1.203/fansik -m "fansik" --username=user1 --password=fanjinbao
2、显示项目列表
# svn list svn://192.168.1.203/fansik
3、剪出版本库中的可用的工作目录
# svn checkout svn://192.168.1.203/fansik
4、添加文件到版本库
# svn add fansik.java
5、删除文件
# svn rm fansik.java
6、更新版本库
# svn update fansik.java
7、提交到版本库
# svn ci -m --force-log "fansik.java"
8、移除或者重命名
# svn move fansik.java fansik1.java
9、打印svn工作目录和文件状态
# svn status -v *(可以使用通配符)