通过svn的钩子可以实现即commit即change通知。
具体方法如下:将commands模块的getstatusoutput函数的 pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')修改为pipe = os.popen(cmd, 'r')
(上述方法并非最佳,应重写一个函数命名为getstatusoutput1,然后将pipe一行重写,否则有可能出现python调用函数getstatusoutput函数是格式不对而产生程序崩溃)
然后再%repository server%/project/hook下增加文件commit.py,pos-commit.bat,源码如下
----------------------------------------commit.py---------------------------------------------------------------
import os
cmd='svnlook youngest "C:/Repository Server/HelloWorld"'
pipe=os.popen(cmd)
version=pipe.read().split('/n')[0]
pipe.close()
cmd='python C:/BuilderServer/buildbot-0.7.5/contrib/svn_buildbot.py --repository "c:/repository server/HelloWorld" --revision '+version+' --bbserver localhost --bbport 9989'
pipe1=os.popen(cmd)
text=pipe1.read()
print cmd
---------------------------------------------------------------------------------------------------------------------
--------------------------------------------pos-commit.bat------------------------------------------------------
python "C:/Repository Server/HelloWorld/hooks/commit.py"
---------------------------------------------------------------------------------------------------------------------
如此来当commit结束后,将执行post-commit.bat批处理,运行python脚本达到钩子效果