centos版本

#检查是否安装了低版本的SVN
rpm -qa subversion
#卸载旧版本SVN
yum remove subversion

安装
yum -y install subversion


判断是否安装成功
subversion -v 或者 svnserve --version


建立库文件目录
mkdir -p /opt/svn/repository
svnadmin create /opt/svn/repository
repository为仓库目录,可自定义其他名称。
自动在repository下建立多个文件, 分别是conf, db,format,hooks, locks, README.txt。

conf下,进行配置,   有以下几个文件authz, passwd,svnserve.conf
其中authz 是权限控制,可以设置哪些用户可以访问哪些目录,   passwd是设置用户和密码的,    svnserve.conf是设置svn相关的操作。


安装完成,开始配置

设置passwd
vi passwd文件
[users]
例子
aaa = 123456
bbb = 123456
用户名=密码

建立用户,一般是明文的,可以使用命令建立密文的
htpasswd -cm /opt/svn/repository/config/passwd name 慎用
密文的慎用,而且会有问题。建议使用vi编辑明文

设置权限authz
在设置权限中有两种写法
[repository:/]   这个名称与 /opt/svn/repository 的最后一个目录repository名称相同。
[/]

例如
[/]
@g_vip = rw
@g_admin = rw
* =
或者
[repository:/]
@g_vip = rw
@g_admin = rw
* =
两种含义相同,但是启动命令会不同
如果使用了[/]
用svnserve -d -r /opt/svn/repository 启动
如果用了[repository:/]
用svnserve -d -r /opt/svn 启动。
建议使用[/],比较直观清晰,而且repository名称出现变更也好维护

例子中
[/]
@g_vip = rw
@g_admin = rw
* =
以*为键值意味着对任何人都进行权限控制。
上级目录的权限默认继承到下级目录,但是,如果在下级目录使用这个注释,可以限制继承关系。
r代表读权限,w代表写权限,空的代表没有权限

设置svnserve.conf
anon-access = none # 使非授权用户无法访问
auth-access = write # 使授权用户有写权限
password-db = /opt/svn/repository/config/password
authz-db = /opt/svn/repository/config/authz   # 访问控制文件
realm = /opt/svn/repository # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.
默认,passwd和authz文件在conf目录中,但是可以自己随便定义文件及其目录,只要再此处设置password-db、authz-db即可。

启动
svnserve -d -r /opt/svn/repository
-r /svndata指定根目录是/svndata
svnserve -d -r /opt/svn/repository --listen-port 10000 -- 换个端口,通过端口可以启动多个svn实例。


启动后连接地址  svn://your server address(如果使用了--listen-port 10000 ,指定了端口,需要添加端口   svn://your server address:10000)



设置authz,可以采用分组模式
[groups]
g_vip=a1
g_admin=a100
g_develop=a2,a3
[/]
@g_vip = rw
@g_admin = rw
* =

[/aaa/]
@g_admin = rw
@g_develop = rw
* =