利用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腳本,從而進行同步更新!簡單又方便,並且適用於不一樣的服務器!
相關文章
相關標籤/搜索