详细请参考这里 svn服务器安装与配置

#!/bin/bash
#subversion and apache install script
#by zm 20110627

#variables
pw_dir=/usr/local
svn_dir=/data/svnroot

#function
#function_main
svn_main (){
#
#check and uninstall rpm packages
#subversion
if rpm -qa | grep subversion > /dev/null;then
    echo subversion 0
    rpm -e --allmatches subversion
else
   echo rpm package subversion 1
fi
#apr
if rpm -qa | grep apr > /dev/null;then
    echo apr 0
    rpm -e --allmatches apr
else
   echo rpm package apr 1
fi
#apr-util
if rpm -qa | grep apr-util > /dev/null;then
    echo apr-util 0
    rpm -e --allmatches apr-util
else
   echo rpm package apr-util 1
fi

#
#install
    tar zxf src/httpd*.tar.gz
#apr
if [ ! -e "$pw_dir/apr" ];then
   cd httpd*/srclib/apr
   ./configure --prefix=/usr/local/apr
   make && make install
   cd ../
   if [ ! -e "$pw_dir/apr" ];then
      echo "error! can't install apr please check ! Will now out of the script!"
      exit 1
   else
      if ! grep '/usr/local/apr/lib' /etc/ld.so.conf>/dev/null;then
          sed -i '$ a\/usr/local/apr/lib' /etc/ld.so.conf
      fi
   fi
else
   echo "apache apr exists"
fi
#apr-util
if [ ! -e "$pw_dir/apr-util" ];then
   cd apr-util/
   ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
   make && make install
   cd ../ 
   if [ ! -e "$pw_dir/apr-util" ];then
      echo "error! can't install apr-util please check ! Will now out of the script!"
      exit 1
   else
      if ! grep '/usr/local/apr-util/lib' /etc/ld.so.conf>/dev/null;then
          sed -i '$ a\/usr/local/apr-util/lib' /etc/ld.so.conf
      fi
   fi
else
   echo "apache apr-util exists"
fi 
#apache2
if [ ! -e "$pw_dir/apache2" ];then
    pwd && cd httpd*/
   ./configure  --enable-dav --enable-so --prefix=/usr/local/apache2/ --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
   make && make install 
   cd ../
   if [ ! -e "$pw_dir/apache2" ];then
      echo "error! can't install apache please check ! Will now out of the script!"
      exit 1
   
   else
      if ! grep '/usr/local/apache2/bin' /etc/profile>/dev/null;then
          sed -i '$,/export/ a\export PATH=$PATH:/usr/local/apache2/bin' /etc/profile
      fi
   fi
else
   echo "apache already exists"
fi


#subversion
if [ ! -e "$pw_dir/subversion" ];then
   tar jxf src/subversion*.tar.bz2
   tar zxf src/sqlite-autoconf*.tar.gz
   cd subversion*/
   mkdir sqlite-amalgamation && cp ../sqlite-autoconf*/sqlite3.c sqlite-amalgamation/
   ./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-ssl  --enable-maintainer-mode
   make && make install 
   if [ ! -e "$pw_dir/subversion" ];then
      echo "error! can't install subversion please check ! Will now out of the script!"
      exit 1
   else
       if ! grep '/usr/local/subversion/bin' /etc/profile>/dev/null;then
          sed -i '$,/export/ a\export PATH=$PATH:/usr/local/subversion/bin' /etc/profile
          source /etc/profile
          ldconfig
       fi
   fi
else
   echo "Already exists"
fi
}

#
#function_config
svn_config() {
#check_user_and_group
if ! grep 'svnroot' /etc/passwd >/dev/null && grep 'root' /etc/group >/dev/null;then
    useradd -s /sbin/nologin svnroot
else
    echo "svnroot user nad group already exists"
fi
#check_svn_dir
if [ ! -e "$svn_dir/repository" ];then
    mkdir -p "$svn_dir/repository"
else
    echo "$svn_dir/repository already exists"

fi
#create repository and import repository
if [ ! -e "$svn_dir/repository/test" ];then
    svnadmin create "$svn_dir/repository/test"
    mkdir -p $svn_dir/repository/import/{trunk,branches,tags}
    svn import $svn_dir/repository/import file:///$svn_dir/repository/test -m 'init'
    if [ ! -e "$svn_dir/repository/test" ];then
        echo "error! can't modify $svn_dir please check ! Will now out of the script!"
        exit 1
    else
        #modify user and group
        chown -R svnroot:svnroot $svn_dir
        chmod 700 $svn_dir
        chmod 700 "$svn_dir/repository"
    fi
else
    echo "repository already exists"
fi
#passwd_file
if [ ! -e "$svn_dir/repository/pwdfile" ];then
    htpasswd -cm "$svn_dir/repository/pwdfile" admin
    chown -R svnroot.svnroot "$svn_dir/repository/pwdfile"
    chmod 700 "$svn_dir/repository/pwdfile"
fi
#create authz file
if [ ! -e "$svn_dir/repository/authz" ];then
printf '
[groups]    
g_pm = micheal,admin    
g_dev = harry,sally,admin
[test:/]    
@g_pm = r    
@g_dev = r    
[test:/trunk]    
@g_pm = rw    
@g_dev = rw    
[test:/branches]    
@g_pm = rw    
@g_dev = rw    
[test:/tags]    
@g_pm = rw    
@g_dev = rw' >"$svn_dir/repository/authz"
#
if [ -e "$svn_dir/repository/authz" ];then
    chown svnroot.svnroot "$svn_dir/repository/authz"
    chmod 700 "$svn_dir/repository/authz"
fi
fi
#modify httpd.conf
sed -i 's/User daemon/User svnroot/' /usr/local/apache2/conf/httpd.conf
sed -i 's/Group daemon/Group svnroot/' /usr/local/apache2/conf/httpd.conf
printf '
<Location /svn>
DAV svn
SVNParentPath /data/svnroot/repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /data/svnroot/repository/pwdfile
AuthzSVNAccessFile /data/svnroot/repository/authz
Satisfy Any    
Require valid-user    
</Location>
'>> /usr/local/apache2/conf/httpd.conf 

}


#
#main
case $1 in
    install)
        echo "argument type $1"
        svn_main
        ;;
    config)
        echo "argument type $1"
        svn_config 
        ;;
    *)
        echo "Usage: $0 {install|config}"
        exit 1
esac