用了半天的时间完善与整理了上周回家写得半调子的代码,paperen倒是不清楚subversion是否支持这个功能,但是既然自己都写了就放上来吧,用的是python写的,所以也就是半调子水平。

弄这个东西的来源是因为在公司那个项目,因为要给客户看到我们那个项目的原型,所以我们在内网找了一台机子作为服务器,然后设置一下路由的转发,将公司的域名挂上去,那么客户访问指定的域名+端口号就会转发到我们内网那台机子上了,而那台机子并不是我用的开发机子,而每次原型有什么更新我都得过去那台机子上用svn update一下,将那台机子上的demo版本更新到最新,为了保证客户看到的demo与我们目前完善的demo是一致的。

所以嘛,你看我们每次有完善什么都得去那台机子上用鼠标操作一下,虽然不到几分钟,但是paperen也嫌麻烦,于是paperen将那台机子开启允许远程,于是自己就不要过去机子面前操作了,在自己机子上远程过去操作svn,然后就关闭远程,那比亲自走过去爽多了,但是……paperen还是觉得麻烦(不得不承认我很懒……)

于是乎就有这么一个东西,给那台机子装个监听器,我拿着触发器,每次需要更新那台机子上的demo时我只要启动触发器就可以了!也就是1秒不到的时间,那真是太棒了!

好吧,希望这个小工具能帮到你

paperen将它放到git上,地址为https://github.com/paperen/svn-updater 

这里就是说说怎用好了,build里面的已经是生成的程序了,可执行文件

SVN_listener

svn_listener将它放到你想要远程同步的那台机子上吧,你需要手动修改一下里面的config.ini文件

SVNPath = E:Subversionbinsvn.exe
SVNRep = E:phphtdocspaperenblogv2

SVNPath为该机子的Subversion地址,也就是说该机子需要安装Svn的服务端(Subversion)windows安装包地址

SVNRep为需要远程更新的版本路径(根据自己的情况更改)

之后双击svn_listener.exe会询问监听的端口,默认为9999,若你需要更改就换一个吧,不要使用已使用中的端口

20120304171738

之后就让它一直监听就可以了,这代表了监听器已经开启了,它只是在等待触发器的链接与触发更新


SVN_trigger

就是触发器,双击svn_trgger.exe启动它,会询问你监听器地址(默认为localhost),在实际中肯定不是localhost,所以你要在此输入(日后会考虑为trigger弄个config.ini就不用每次询问了),之后就是端口(默认是9999),如果你监听器不是使用9999端口那么你需要在此输入其监听的端口

20120304173609

之后就会将远程的版本更新了,你也会在监听器中获取到触发端信息与时间

20120304173733


php触发

既然监听器是基于socket的,那么你也可以通过php触发(只有你有php的环境),可以不使用trigger进行触发


$handle = fsockopen('localhost', 9999);
$out = 'update';
fwrite($handle, $out);
while (!feof($handle)) {
echo fgets($handle, 128);
}
fclose($handle);

?>

在浏览器访问这个文件则可以达到同样效果,你需要输送一个命令给监听器,就是update

20120304174741


最后

你可能需要更新一下svn客户端的版本,paperen在调试过程中就出现了客户端的版本较低,升级后就可以了,而至于svn的配置在这里就不说了,当然首要的工作是你要配置好svn不然这个工具也没用

关于这个小工具的源码在git上我都放出来了,一句话概括就是“没什么看点”……