本文档致力于介绍subversion(以下简称svn)的安装及权限配置方法。为建立svn配置管理库提供一个可执行的方案,供有需要的读者使用。
服务器的管理员应该根据自身建设服务器的方式有选择的学习第二部分和第三部分。客户端的使用直接参考第四部分内容。
Subversion官方网站
Subversion插件资源
Subversion中文站
iusesvn
版本控制软件SubVersion入门
SVN服务器搭建完全手册
Apache和Subversion搭建安全CVS
利用svnserve.exe实现精细的目录访问控制(v1.0)
RHEL(AS4)上安装apache2.2.3 + svn1.4 +自动邮件通知(超完整版)
从CVS迁移到SVN
2 安装服务器
Subversion可以运行在linux平台中也可以运行在windows平台中。相对而言,在linux环境中,运行良好,性能稳定,是配置管理库的首选方案。以下将分别介绍在不同的平台中使用不同方式架设svn服务器的步骤。可以根据实际部署环境有选择的分块阅读。
http://subversion.tigris.org/downloads/subversion-1.4.3.tar.gz
http://subversion.tigris.org/downloads/subversion-deps-1.4.3.tar.gz
http://apache.justdn.org/httpd/httpd-2.2.3.tar.gz
site-1.2.0.zip(subclipse:eclipse插件)
tortoisesvn下载
svn-importer-1.1-M8.tar.gz(svn转换工具)
或者访问共享目录:\\10.130.32.16
图表2‑1 subversion体系构架
Subversion的设计包括一个抽象的网络层,版本库可以通过各种服务器进程访问,而且客户端“版本库访问”的API允许程序员写出相关协议的插件,Subversion可以使用无限数量的网络协议实现,目前实践中存在着以下两种服务器。
Apache是最流行的web服务器,通过使用mod_dav_svn模块,Apache可以访问版本库,并且可以使客户端使用HTTP的扩展协议WebDAV/DeltaV进行访问,另一个是svnserve:一个小的,独立服务器,使用自己定义的协议和客户端,下面的表格比较了这两种服务器。
表格2‑1 <网络服务器比较>
特性 | Apache + mod_dav_svn | svnserve |
认证选项 | HTTP(S) basic auth、X.509 certificates、LDAP、NTLM或任何Apache httpd已经具备的方式 | CRAM-MD5或SSH |
用户帐号选项 | 私有的'users'文件 | 私有的'users'文件,或存在的系统(SSH)帐户 |
授权选项 | 整体的读/写访问,或者是每目录的读/写访问 | 整体的读/写访问,或者是使用pre-commit钩子的每目录写访问(但不是读) |
加密 | 通过选择SSL | 通过选择SSH通道 |
交互性 | 可以部分的被其他WebDAV客户端使用 | 不能被其他客户端使用 |
Web浏览能力 | 有限的内置支持,或者通过第三方工具,如ViewVC | 通过第三方工具,如ViewVC |
速度 | 有些慢 | 快一点 |
初始化配置 | 有些复杂 | 相当简单 |
本例将安装在服务器10.130.33.119上。安装AS4的时候曾经安装了apache,但不是最新版本,我们将首先安装apache2。
下载httpd-2.2.3.tar.gz。http://apache.justdn.org/httpd/httpd-2.2.3.tar.gz
2.3.1 操作步骤
第一步、 安装编译apache:
# chmod a+x httpd-2.2.3.tar.gz //添加可执行权限
# tar zxvf httpd-2.2.3.tar.gz //解压缩安装包
# cd httpd-2.2.3 //进入安装目录
# ./configure --enable-module=so --enable-dav --enable-dav-fs --enable-dav --enable-so --prefix=/usr/local/apache2 //--enable-module=so配置Apache支持Dynamic Shared Objects (DSO)模式,--enable-dav即添加mod_dav.so模块,--enable-dav-fs即添加mod_dav_fs.so模块,--prefix=/usr/local/apache2是所需要安装到的目录位置。
# make install //编译后进行安装
安装完毕,进行测试。
# vi /usr/local/apache2/conf/httpd.conf //修改apache配置文件 将ServerName修改为ServerName 10.130.33.119:80
# cd /usr/local/apache2/bin //进入apache控制脚本目录
# ./apachectl start //启动apache
用IE打开http://10.130.33.119,可以看到It works!说明apache已经可以正常工作了。
第二步、 安装编译subversion:
# tar zxvf subversion-1.4.3.tar.gz //解压缩安装包
# tar zxvf subversion-deps-1.4.3.tar.gz //解压缩安装包
# cd subversion-1.4.3 //进入安装目录
# ./configure --prefix=/usr/local/subverion \--with-apxs=/usr/local/apache2/bin/apxs\--with-apr=/usr/local/httpd-2.2.3/srclib/apr/ \--with-apr-util=/usr/local/httpd-2.2.3/srclib/apr-util \--with-ssl //--with-apxs指定apxs的安装的目录,可以在安装过程中自动生成两个必要的模块文件mod_dav_svn.so和mod_authz_svn.so以及能够支持它们可以正常地工作。其中/usr/local/httpd-2.2.3是apache的源代码的目录,请根据实际情况修改。
# make install //编译后进行安装
# svnadmin –-version //检验subversion是否安装成功,查看subversion的版本
第三步、 配置管理区库
# mkdir /svndata //创建SVN根目录svndata
# ./svnadmin create --fs-type fsfs /svndata/test //在SVN根目录下创建一个名叫test的仓库,--fs-type为指定仓库的文件格式为fsfs
# vi /usr/local/apache2/conf/httpd.conf
检查是否添加了以下两行(一般会自动加入,如果没有则可能是subversion编译没有成功,需要进一步检查)
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
先修改版本库的权限:
User nobody
Group #-1
//把上述内容改成:
User apache
Group apache
//(我的系统在安装apache的时候,自动增加了apache用户和apache组,如果你系统没有这个用户和组,则请自己添加该用户和组)
在末尾加上以下参数
<Location /svn>
DAV svn
SVNPath /svndata/test
AuthType Basic
AuthName "UBSOSS's SVN"