利用SVN hooks +cURL, 对SVN服务器进行实时同步

团队协同开发,通常都要用到svn, svn确实是个好东东。但一些程序员作测试都是在开发服务器上进行,因此开发同窗提交到svn的代码 ,还需一步,就是手工更新到开发服务器。

通常的办法是,就是用python的web.py框架,写一个更新的脚本,经过http的方式对svn进行更新同步。

实现方法:

下面用web.py框架实现的步骤:
一、框架安装
cd /usr/local/soft/
wget http://webpy.org/static/web.py-0.33.tar.gz
tar zxvf web.py-0.33.tar.gz
cd web.py-0.33
python setup.py install
二、编写代码
vi /usr/local/webpy/subversion_web.py
#!/usr/bin/env python

# …
import web,os
render = web.template.render(‘templates/’)

urls = (
‘/’, ‘index’
)
app = web.application(urls, globals())
class index:
def GET(self):
text = os.popen(“cd /home/htdocs/app;svn update”).read()
print text
return text

if __name__ == “__main__”:
app.run()

三、程序永远后台执行
nohup /usr/local/webpy/subversion_web.py &
exit
四、测试更新

http://192.168.1.36:8080/

显示为:
C app/sitemap.xml
Updated to revision 32786.

到这一步,手工更新svn到开发服务器是没问题了。但最大的问题就是半自动 ,程序员提交代码到svn服务器,还需打开浏览器,手工在浏览器里执行 http://192.168.1.36:8080/,方可将代码同步到开发服务器。长此以往,非常麻烦。

最近发现svn还 hooks这功能,很是 不错,自动同步的理论已经实现了。接下去就是要想个办法,怎么通用批处理执行 http://192.168.1.36:8080/,第一固然是想到了curl,考虑到svn服备器在是windows的,因此要下载一个windows版本cURL,下载地址: http://curl.haxx.se/download.html

curl到d盘目录下,而后在hooks目录下新建

post-commit.bat

@echo off
d:/curl.exe -I http://192.168.1.36:8080/
保存退出! 这样每次程序员提交代码到svn,svn会自动触发post-commit.bat脚本,从而进行同步更新!简单又方便,并且适用于不一样的服务器!
相关文章
相关标签/搜索