一,介绍
 subversion(简称svn)是近年来崛起的版本管理软件,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。   Subversion是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。[1]    Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。某些版本控制系统本身也是软件配置管理系统(SCM),这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性—比如,对编程语言的支持,或者提供程序构建工具。不过Subversion并不是这样的系统。它是一个通用系统,可以管理任何类型的文件集。
 
二 , 安装
[root@cn-dns-test03 /]# yum install mod_dav_svn subversion
[root@cn-dns-test03 /]# svn --version
svn, version 1.6.11 (r934486)
   compiled Jun 23 2012, 00:44:03
 
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
 
The following repository access (RA) modules are available:
 
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
 - handles 'http' scheme
 - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
 - with Cyrus SASL authentication
 - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
 - handles 'file' scheme
 
[root@cn-dns-test03 /]#
 
 
三, 配置
[root@cn-dns-test03 /]# vi /etc/httpd/conf/httpd.conf
                        ServerName 127.0.0.1:80
 
 
[root@cn-dns-test03 var]# cd /
[root@cn-dns-test03 /]# mkdir svn
[root@cn-dns-test03 /]# cd svn/
[root@cn-dns-test03 svn]# ls
[root@cn-dns-test03 svn]# mkdir data conf
[root@cn-dns-test03 svn]# ls
conf data
[root@cn-dns-test03 svn]# cd data/
[root@cn-dns-test03 conf]# ls
[root@cn-dns-test03 conf]# svnadmin create newrepos
[root@cn-dns-test03 conf]# cd /
[root@cn-dns-test03 /]# chown -R apache.apache svn
[root@cn-dns-test03 /]#
 
[root@cn-dns-test03 newrepos]# vim /etc/httpd/conf.d/subversion.conf
 
[root@cn-dns-test03 newrepos]# cat /etc/httpd/conf.d/subversion.conf
 
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
 
#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn". Each repository
# must be both:
#
#   a) readable and writable by the 'apache' user, and
#
#   b) labelled with the 'httpd_sys_content_t' context if using
#   SELinux
#
 
#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
#   # cd /var/www/svn
#   # svnadmin create stuff
#   # chown -R apache.apache stuff
#   # chcon -R -t httpd_sys_content_t stuff
#
 
<Location /svn>
   DAV svn
   SVNParentPath /svn/data
#
#   # Limit write permission to list of valid users.
#   <LimitExcept GET PROPFIND OPTIONS REPORT>
#      # Require SSL connection for password protection.
#      # SSLRequireSSL
#
      AuthType Basic
     AuthName "subversion repos"
     AuthUserFile /svn/conf/svn-auth-conf
      Require valid-user
#   </LimitExcept>
</Location>
[root@cn-dns-test03 newrepos]#
 
[root@cn-dns-test03 newrepos]# htpasswd -cm /svn/conf/svn-auth-conf user
New password:
Re-type new password:
Adding password for user user
[root@cn-dns-test03 newrepos]#