SVN安装
先检查系统中是否存在svn
svn --version
若不存在则会报告svn命令找不到的错误(svn: command not found)
使用如下命令进行安装
yum install subversion
安装成功之后,执行 svn --version 命令
至此,SVN安装完成
SVN服务开启
手动新建版本库目录
mkdir /opt/svn
利用svn命令创建版本库
svnadmin create /opt/svn/库名
使用命令svnserve启动服务
svnserve -d -r 目录 --listen-port 端口号
- -r: 配置方式决定了版本库访问方式。
- --listen-port: 指定SVN监听端口,不加此参数,SVN默认监听3690
- 需要在服务器安全中放开3690端口
扩展:关闭svn服务命令
killall svnserve
由于-r 配置方式的不一样,SVN启动就可以有两种不同的访问方式
方式一:-r直接指定到版本库(称之为单库svnserve方式)
svnserve -d -r /opt/svn/库名
在这种情况下,一个svnserve只能为一个版本库工作。
authz配置文件中对版本库权限的配置应这样写:
(user1属于admin组,user2属于dev组,在svn的根目录(不是Linux的)下,admin组有读写权限,user2有读的权限)
[groups]
admin=user1
dev=user2
[/]
@admin=rw
user2=r
使用类似这样的URL:svn://192.168.0.1/ 即可访问 该库名下的 版本库
方式二:指定到版本库的上级目录(称之为多库svnserve方式)
svnserve -d -r /opt/svn
这种情况,一个svnserve可以为多个版本库工作
authz配置文件中对版本库权限的配置应这样写:
(user1属于admin组,user2属于dev组,设置库1的权限admin组有读写权限,user2有读的权限,设置库2的权限admin组有读写权限,user2有读的权限)
[groups]
admin=user1
dev=user2
[库1:/]
@admin=rw
user2=r
[库2:/]
@admin=rw
user2=r
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录。
使用类似这样的URL:svn://192.168.0.1/库1 即可访问 库1 版本库。
SVN版本库的配置
使用 svn 命令创建资源库:
svnadmin create /opt/svn/库1
进入 /opt/svn/库1/conf 目录,修改默认配置文件配置,包括 svnserve.conf、passwd、authz 配置相关用户和权限。
1、svn 服务配置文件 svnserve.conf
svn 服务配置文件为版本库目录中的文件 conf/svnserve.conf。该文件仅由一个 [general] 配置段组成。
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
#realm =
- anon-access: 控制非鉴权用户访问版本库的权限,取值范围为 "write"、"read" 和 "none"。 即 "write" 为可读可写,"read" 为只读,"none" 表示无访问权限,默认值:read。
- auth-access: 控制鉴权用户访问版本库的权限。取值范围为 "write"、"read" 和 "none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限,默认值:write。
- authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径,默认值:authz。
- realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。默认值:一个UUID(Universal Unique IDentifier,全局唯一标示)。
2、账号设置文件 passwd
[users] 配置段的配置行格式如下:
账号 = 密码
#例:
[users]
admin = admin
thinker = 123456
user1 = 111
3、权限配置文件authz
#在存在两个svn版本库,分别为 库1 , 库2
(user1属于admin组,user2属于dev组,设置库1的权限admin组有读写权限,除admin组其他人只有读的权限,设置库2的权限admin组有读写权限,user2有读的权限)
[groups]
admin=user1
dev=user2
[库1:/]
@admin=rw
* = r
[库2:/]
@admin=rw
user2=r
或
[groups]
admin=user1
dev=user2
[/]
@admin=rw
user2=r
此时还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录。
使用类似这样的URL:svn://192.168.0.1/库1 即可访问 库1 版本库。
参考