一、安装Subversion和Apache
1.安装Subversion。为求方便,在Ubuntu中直接使用源来安装Subversion
apt-get install subversion
apt-get install libapache2-svn
2.安装apache。同上,使用源安装!
apt-get install apache2
如果在源列表中找不到Subversion,就先更新一下源:apt-get
update。
二、创建SVN库
确定svn版本库的目录,如/home/svn,创建目录mkdir /home/svn。
创建SVN库,如testing 。Svnadmin create /home/svn/testing
更改/home/svn权限及用户组
chmod -R g+rws /home/svn
chown -R root:subversion
用ls命令查看/home/svn/tesing,如存在文件及目录,则说明testing库创建成功。在Linux中可用svn co file:///home/svn/testing访问该库。
三、通过http协议访问
要使用http协议访问,需要将SVN库属主更改为www-data,否则会出现Permission Denied的情况!如修改testing库的属主:chown -R www-data /home/svn/testing
在/etc/apache2/mods-available中,将以下文档添加到dav_svn.conf
<Location /svn/testing>
DAV svn
SVNPath /home/svn/testing
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
如果要求每次访问都使用用户密码登录,则把<LimitExcept>和</LimitExcept>注释掉。
四、基于多库的权限配置
要同时管理多个库,可在dav_svn.conf中指定svn库的父目录,将SVNPath /home/svn/testing一行修改为SVNParentPath /home/svn/,如下
<Location /svn/>
DAV svn
SVNParentPath /home/svn/
AuthType Basic
AuthName “myproject subversion repository”
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFIle /etc/subversion/authz
<LimitExcept GET PROPFIND OPTIONS
REPORT>
Require valid-user
</LimitExcept>
</Location>
#SVNParentPath是用来指定SVN库父目录用的,具体的路径要根据创建库而定,如上面的配置,则可以通过http://localhost/svn/testing来访问testing这个库。
#AuthUserFile是用来保存用户密码的文件,理论上来说可以位于任何地方。之后可以用htpasswd来添加用户,第一次添加时,使用htpasswd –c /etc/subversion/passwd test来生成passwd文件,-c参数是指创建passwd文件。
#AuthzSVNAccessFile是用户权限控制配置文件,理论上也是可以存在任何地方的,如果不知道文件如何编写,可以在已经创建的SVN库中conf文件夹中,直接拷贝到dav_svn.conf中指定的路径即可!
Authz权限控制样例
[groups]
testing =test1,test2
develop =develop1,develop2
[testing:/]
@testing = rw
* =
[testing:/1]
test1 = rw
#[group]在其下设定组及组成员,格式为
Groupname =
user1,user2,userx
#[testing:/]表示testing库的根目录,在其下编写权限规则
* = 表示任何用户都无任何权限,@testing
= rw 表示testing组成员拥有读写权限,只读则用r表示。