环境:
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在另类环境中实现自动提交的方法
本文转自 elain2012 51CTO博客,原文链接:http://blog.51cto.com/elain/623303