环境:
SVN SERVER  172.16.1.100            (CentOS 5.5 X64)
WEB SERVER  172.16.1.111            (CentOS 5.5 X64)
client      10.0.1.50               (Windows XP 若干个)

实现目的:
SVN SERVER 是版本控制中心,里面有多个版本库,现在要实现 程序员(client)提交代码到SVN SERVER上,WEB SERVER会自动去svn up版本控制中心(SVN SERVER)的代码到相应的目录下;

实现方式:

首先在现有的SVN SERVER上  新建目录 ,在WEB 上把WEB目录配置成NFS 目录 ,挂载WEB目录 到新建目录上,检出 版本库 添加hooks脚本,让其达到 程序员提交文件,自动触发更新。

步骤:
1、在WEB SERVER上
vi /etc/exports
/elain/data/htdocs/www  172.16.1.0/24(rw,sync,no_root_squash)

/etc/init.d/portmap start
/etc/init.c/nfs start

#加入自启动
chkconfig portmap on
chkconfig nfs on

2、在SVN SERVER上
SVN目录 是   svn://172.16.1.100/trunk/www
mkdir -p /data/wwwroot

[root@Svn elain#]showmount -e 172.16.1.111
Export list for 172.16.1.111:
/elain/data/htdocs/www 172.16.1.0/24

mount -t nfs 172.16.1.111:/elain/data/htdocs/www /data/wwwroot

#加入自启动
vi /etc/rc.local
mount -t nfs 172.16.1.111:/elain/data/htdocs/www /data/wwwroot

#SVN 检出
svn co svn://172.16.1.100/trunk/www /data/wwwroot

chown -R www.www /data/wwwroot

cd /elan/svndata/trunk/hooks
cp post-commit.tmpl post-commit

vi  post-commit

添加以下一行
svn up /tuibo/wwwroot

注:post-commit原有内容是提交发邮件的机制,需要的可以配置一下,不需要的可以全部注释。

测试:

在client机上 更改一个文件 ,提交。 我们只需在 WEB SERVER上查看相应的文件 是否自动更新成功。

以上方法只是我在内网测试环境上做的,重要的是给大家一个思路,此方法SVN 提交时可能会有十秒左右延迟。
欢迎大家提出更好的思路,我想到的还有两种思路:

1、用hook脚本 SSH 远程执行 svn up更新,
2、用hook脚本 sersync 来实时传输

大家不妨试试……

转载请注明: 转载自http://www.elain.org

本文链接地址:SVN在另类环境中实现自动提交的方法