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

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

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

实现方法:

下面用web.py框架实现的步骤:
1、框架安装
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
2、编写代码
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()

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

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脚本,从而进行同步更新!简单又方便,而且适用于不同的服务器!

你可能感兴趣的:(linux,curl,hooks,SVN同步)