假设已经Linux搭建了svn服务器
创建仓库
语法:svnadmin create /directory
我是在 /data/svnrepos
下新建myproject仓库
1 | cd /data |
仓库创建成功以后,会出现一个仓库名字的文件夹 文件夹下面有以下几个文件和目录
1 | myproject |
其中conf文件夹下面包含三个重要文件 authz passwd svnserve.conf
1 | conf |
修改配置文件
增加用户
修改passwd文件
passwd的配置语法格式: 用户名=密码1
2
3
4
5
6
7
8
9
10
11# vi passwd
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
xiaozhang = 123 #修改处
之后可以通过帐号xiaozhang密码123进行操作。
配置用户权限
修改authz文件
注意:
- 权限配置文件中出现的用户名必须已在用户配置文件中定义。
- 对权限配置文件的修改立即生效,不必重启svn。
用户组格式:1
2[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:1
2
3[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法:/
表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/data/svnrepos/myproject
。这样,/
就是表示对全部版本库设置权限。repos1:/
表示对版本库1设置权限repos2:/a
表示对版本库2中的a项目设置权限repos2:/a/b
表示对版本库2中的a项目的b目录设置权限
权限主体可以是用户组、用户或,用户组在前面加@,表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
1 | # vim authz |
意思是,在根目录下xiaozhang用户拥有读写权限。
修改svn启动项参数
修改svnserve.conf文件
svn服务配置文件为版本库目录中的文件conf/svnserve.conf。该文件仅由一个[general]配置段组成
[general]配置段中配置行格式如下:
<配置项> = <值>
配置项分为以下5项:
1.anon-access
控制非鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。
即”write”为可读可写,”read”为只读,”none”表示无访问权限。
缺省值:read
2.auth-access
控制鉴权用户访问版本库的权限。取值范围为”write”、”read”和”none”。
即”write”为可读可写,”read”为只读,”none”表示无访问权限。
缺省值:write
3.password-db
指定用户名口令文件名。除非指定绝对路径,否则文件位置为相对conf
目录的相对路径。
缺省值:passwd
4.authz-db
指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
缺省值:authz
5.realm
指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的
认证域相同,建议使用相同的用户名口令数据文件。
缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)
1 | # vim svnserve.conf |
启动服务
语法:svnserve -d -r svn仓库目录
svnserve -d -r /data/svnrepos/myproject/
如果启动提示svnserve: Can't bind server socket: Address already in use
,是由于已经启动了svn,你的配置文件应该已经生效了。
查看svn进程ps -ef|grep svn
访问svn服务
使用svn客户端 输入地址 svn://ip/myproject 就可以访问到这个仓库。