svn(subversion)是近年来崛起的版本管理工具。目前,绝大多数开源软件都使用svn作为代码版本管理软件。svn服务器有2种运行方式:独立服务器和借助apache等web服务器。两种方式各有利弊。svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
PS:若借助于apache访问,则/svndata目录及以下目录均需要变更属主为apache,即需要有chown -R apache:apache /svndata
本文主要介绍SVN独立服务器的的安装和简单配置:
安装(centos下yum即可方便的完成安装)
# yum install subversion
测试安装是否成功:
# svnserve --version 回车显示版本说明安装成功
建立版本库
# mkdir /svndata 首先创建svn数据目录(目录可自行指定)
# svnadmin create /svndata/kuming 这就是建立版本库的命令了,kuming就是版本库的名字,每个版本库创建之后都会生成svnserve.conf主配文件!
配置svn配置文件(为了方便管理,这里多个库调用相同的配置文件。)
#下面是配置kuming版本库的配置文件
# vim /svndata/kuming/conf/svnserve.conf
anon-access = none
auth-access = write
password-db = /svndata/kuming/conf/passwd
authz-db = /svndata/kuming/conf/authz
realm =kuming #这一行可以不写
# vim /svndata/kuming/conf/passwd //svn用户配置文件
[users]user1 = password1
user2 = password2
user3 = password3
user4 = password4
# vim /svndata/kuming/conf/authz //svn权限控制配置文件
[groups] #设置组group1 = user1,user2 #多用户用逗号隔开
[/] #根目录权限设置(就是“kuming”这个文件夹)
user3 = rw #用户1权限是:可读写
user4 = r #用户2权限是:可读,不可写
*= #剩余用户的权限,都没写代表没有任何权限
@group1 = rw #设置组权限
[kuming:/123] #设置根目录下“123”文件夹的权限
#说明“123”这个文件件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN,然后创建一个文件夹“123”。
启动服务器
# svnserve -d -r /svndata -d表示以daemon方式(后台运行)运行 -r /svndata指定根目录是/svndata
关闭SVN 服务器
# kill all svnserve
# ps aux | grep svnserve 查看服务,端口:3690
客户端使用的软件是TortoiseSVN
浏览方法:打开版本库浏览器输入:svn://ip-addr/kuming/文件夹名
===============================================================================
补充:在svn的数据目录下面创建多个reporty库,并且使用相同的配置文件进行管理,实施步骤如下:
1、在根目录下面创建数据目录
mkdir /svndata
2、进入/svndata/,在创建的目录下面创建多个代码仓库分别保存多个项目
# 保存bbs项目的仓库
svnadmin create bbs
# 保存blog项目的仓库
svnadmin create blog
# 保存home项目的仓库
svnadmin create home
3、创建配置文件保存目录
mkdir /svndata/conf
在conf文件中放置配置文件,可以把任何一个仓库下面的conf目录下面的配置文件拷贝到这里来,一共有三个主要文件:
passwd
authz
svnserve.conf
(1)在svnserve.conf配置文件中做好配置,指定好里面的一下几项:
[general]
anon-access = none
auth-access = write
password-db = /svndata/conf/passwd 指定公共用户文件的位置
authz-db = /svndata/conf/authz 指定公共权限配置文件的位置
(2)然后在passwd写公共用户配置信息
[users]
user1 = password1
user2 = password2
user3 = password3
user4 = password4
(3)然后在authz配置文件中写组权限
[groups] 设置组
group1 = user1,user2 多用户用逗号隔开
[bbs:/] bbs版本库的根目录权限设置
@group1=rw
user3 = rw #用户1权限是:可读写
[bbs:/data] bbs版本库的“data”子目录的权限设置,“data”这个文件怎么创建?这是在SVN服务器配置好之后,创建一个权限很高的用户在客户端登录SVN创建的。
@group1=rw
user1 = rw #用户1权限是:可读写
user2= rw #用户2权限是:可读,不可写
* = #其余的用户,什么都没写,代表没有任何权限
[blog:/] 再设置blog目录的权限
****************
PS:权限具备继承性 任何子目录,均可继承其父目录的所有权限,除非它自己被明确设置了其他的权限。也就是说,在 bbs的根目录设置权限后, bbs/data 目录如果没有进行设置,就意味着它的权限与 arm 目录一样.
4、启动subversion,并指定公共配置文件
svnserve -d -r /svndata --config-file=/svndata/conf/svnserve.conf
#说明:-r 将/svndata 作为reporty的根目录启动,--config-file指定配置文件位置启动。