配置SVN+Apache

因为分布式开发的目的,配置了一个apache集成SVN的环境,具体流程如下,

首先安装apache

wget http://apache.siamwebhosting.com/httpd/httpd-2.0.59.tar.gz
./configure --prefix=/usr/local/subversion --enable-dav --enable-so --enable-ssl
make
make install

这里不能使用最新的httpd,除非有时间把subversion的apr和apache的统一到一起


安装subversion

wget http://subversion.tigris.org/downloads/subversion-1.4.4.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.4.4.tar.gz
tar zxvf subversion-1.4.4.tar.gz
tar zxvf subversion-deps-1.4.4.tar.gz; cd subversion-1.4.4
./configure --prefix=/usr/local/subversion/ --with-apxs=/usr/local/subversion/bin/apxs --with-ssl
make && make install
make swig-py && make install-swig-py


建立新的用户和组来运行服务

groupadd svn
useradd -m -d /srv/svn/ -g svn svn


建立需要的仓库,假设我们需要两个doc和share

su - svn
mkdir /home/svn/repositories/
mkdir /home/svn/repositories/doc/
mkdir /home/svn/repositories/share/
svnadmin create /home/svn/repositories/doc/
svnadmin create /home/svn/repositories/share/


编辑httpd.conf,使SVN Module起作用

ServerRoot "/usr/local/subversion/"
User svn
Group svn
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so


增加svn对仓库的许可

<Location /svn/>
Order allow,deny
Allow from all
DAV svn
SVNParentPath /home/svn/repositories/
# our access control policy
AuthzSVNAccessFile /home/svn/conf/users-access-file
#try anonymous access first, resort to real
#authentication if necessary.
Satisfy Any
Require valid-user
# how to authenticate a user
AuthType Basic
AuthName "My Subversion repository"
AuthUserFile /home/svn/conf/passwd
</Location>


/home/svn/conf/passwd文件可以用htpasswd来生成

每行一个用户,类似
jixt:$dasfs33iad


user-access-file如下

[/]
* =
[doc:/]
jixt = r
[share:/]
jixt = rw
[share:/bugs/]
sharry = rw


启动服务,现在就可以通过svn客户端来管理代码了