以httpd-2.2.11和Subversion-1.6.3为例
Linux环境架设:
1.    httpd-2.2.11安装
1.1    安装apr-1.3.6,httpd-2.2.11需要1.0以上的apr
tar -jxvf apr-1.3.6.tar.bz2
cd apr-1.3.6
./configure –prefix=/usr/local/apr-1.3.6/
make
make install
1.2    安装apr-util-1.3.8,httpd-2.2.11需要1.0以上的apr-util
tar jxvf apr-util-1.3.8.tar.bz2
cd apr-util-1.3.8
./configure –prefix=/usr/local/apr-util-1.3.8   –with-apr-util=/usr/local/apr-1.3.6
make
make install
1.3    安装http-2.2.11
tar jxvf httpd-2.2.11
cd httpd-2.2.11
./configure –prefix=/usr/local/httpd-2.2.11 –enable-rewrite=shared  –enable-dav=shared –enable-deflate=shared –enable-so=shared  –with-apr-util=/usr/local/apr-1.3.6  –with-apr-util=/usr/local/apr-util-1.3.8
make
1.4    make install
2    安装subversion-1.6.3
tar –xvf subversion-1.6.3.tar.bz2
tar –xvf subversion-dep-1.6.3.tar.bz2

cd subversion-1.6.3
./configure –prefix=/usr/local/subversion-1.6.3/  --with-apxs=/usr/local/httpd-2.2.11/bin/apxs  –with-apr=/usr/local/apr-1.3.6/  --with-apr-util=/usr/local/apr-util-1.3.8/
make
make install
3    创建版本库
mkdir –p /svn/repo
/usr/local/subversion-1.6.3/bin/svnadmin create /svn/repo/test
4    配置验证
4.1     验证方式有两种,其一通过httpd方式验证,其密码是经过加密;其二通过subversion自身带的方式验证,其密码是明文。两种方式的权限分配都是 通过同一个authz来分配的。
4.2    httpd方式
创建密码文件users同时添加用户 svnroot  htpasswd  –c  /svn/users svnroot
添加用户manager htpasswd /svn/users manager
注意提示输入密码
4.3    subversion方式
vi /svn/users.conf
输入
[users]
svnroot  = svnroot
manager  = manager
……
4.4    authz文件,在每个group后面可以添加多个user,每个user之间以逗号隔开即可
[groups]
superteam = svnroot
otherteam = manager
[/]
@superteam = rw

--版本库projects,otherteam只能访问projects下的subway目录

[projects:/subway]

@otherteam = rw

5    配置httpd.conf
vi  httpd.conf
5.1    修改Listen 为*:80(若端口被占用,请修改为其他端口)
5.2    修改User daemon     为User svnroot
Group daemon       Group svn
5.3    在最后添加
<Location />
DAV svn
SVNParentPath /svn/repo
Satisfy Any
Require valid-user

AuthType Basic
AuthName "Welcome to *********** Subversion Server!"
AuthUserFile /svn/users
AuthzSVNAccessFile /svn/authz 
</Location>

6    配置svnserve.conf

每创建一个版本库,都要修改版本库的svnserve.conf文件

vi /svn/repo/test/conf/svnserve.conf

passowrd_db=/svn/users.conf     //账号文件所在位置

authz_db=/svn/authz             //权限文件所在位置
7    赋权限
7.1    将user manager加入svn组
Groupadd svn
Useradd  manager&ndash;g svn
7.2    将/svn文件夹赋给svnroot
chown &ndash;R svnroot.svn /svn
chmod &ndash;R 777 /svn
8    启动
8.1    切换user到svnroot
8.2    启动httpd-2.2.11  /usr/local/httpd-2.2.11/bin/apachectl &ndash;k start
8.3    启动subversion-1.6.3  /usr/local/subversion-1.6.3/bin/svnserve &ndash;d  &ndash;r /svn/repo



Window环境:

版本库管理
对于版本库的管理来说是不区分平台的,所以可以windows平台和linux可以是随意的。
版本库可以做全备、增量备份和镜像同步三种备份方式,在这里只讲镜像同步。
镜像可以单机双库和双机双库备份,两种方式没有本质的区别。
以svnroot账号做
配置镜像同步步骤
1.    在镜像机192.168.1.1上创建版本库/svn/repo/qq,
2.    cp /svn/repo/qq/hooks/pre-revprop-change.tmpl   /svn/repo/qq/hooks/pre-revprop-change
3.    vi /svn/repo/qq/hooks/pre-revprop-change,注释掉后面的三行,保存退出
4.    在源机192.168.1.2执行镜像初始化
/svn/local/subversion-1.6.3/bin/svnsync init svn://192.168.1.1/qq  file:///svn/repo/test --source-username=svnroot  --source-password=svnroot --sync-username=svnroot  --sync-password=svnroot
5.    同步
/svn/localsubversion-1.6.3/bin/svnsync sync svn://192.168.1.1/qq  --sync-username=svnroot --sync-password=svnroot
6.    修改/svn/repo/test/hooks/post-commit,以每次版本库有提交时都会自动同步到镜像上
cp /svn/repo/test/hooks/post-commit.tmpl   /svn/repo/test/hooks/post-commit
添加/svn/localsubversion-1.6.3/bin/svnsync sync  --non-interactive  svn://192.168.1.1/qq
7.    版本库迁移
7.1 打包
/usr/local/subversion-1.6.3/bin/svnadmin dump /svn/test >test.dump
7.2 恢复
创建空的版本test
/usr/local/subversion-1.6.3/bin/svnadmin create /svn/test
恢复test
/usr/local/subversion-1.6.3/bin/svnadmin load /svn/test <test.dump

注:双机备份一定要开svnserve服务来使用svn协议去做同步,http是不行的