很多人都把SVN服务器搭建在正式服务器上,commit后,需要在测试服务器先测试一下,这时候,就需要在测试环境进行update操作。
问题是,commit后,测试环境如何实现自动更新呢?
研究了一天,终于有了结果,对bat和vbs一窍不通,就是有点麻烦。
OK,我们先写一个批处理文件svnUpdate.bat来进行svn update操作:
::SVN自动update ::待更新SVN目录 SET WORKING_COPY=D:/wwwroot svn update %WORKING_COPY% ::pause
文件很简单,就两条命令。
WORKING_COPY是你测试环境的网站目录,这里是D:/wwwroot,请自行修改,当然你必须在该目录下checkout先。
如果用户名或密码更改了,你应该手动进行一次验证,并保存验证结果。
svn update命令自行查看资料 =。 =
下一个问题是怎么调用这个bat文件呢?如果正式和测试环境,都在同一只机器上,那么直接编写HOOK,调用这个文件就可以。
但如何不是同一个机器呢?一个比较简单的办法,就是在测试环境上,每经过一个时间间隔进行更新操作,我们可以编写一个vbs脚本,每隔15秒调用一次svnUpdate.bat。
采用vbs调用有一个好处,可以隐藏弹出的cmd.exe窗口。
我们新建一个文件,callSvnUpdate.vbs,内容如下:
'指定时间间隔调用.bat文件 '停止脚本请在任务管理器结束wscript.exe
Set ws=wscript.createobject("wscript.shell") dim bat '需运行的文件 bat="cmd.exe /c svnUpdate.bat" do '0表示不显示窗口,1显示,调试用 ws.run bat,0 '每15秒运行一次 wscript.sleep 15000 loop
将两个文件放于同一目录中,运行callSvnUpdate.vbs,一切尽在不言中。