原来svn可以利用hook进行一些猥琐的动作,比如paperen之前这个文件版本同步小工具这种小玩意就可以免了,当paperen发觉到这个事实后不禁内牛满面……

下面来隐约地说下这个hook怎实现客户端提交后让服务端的版本自动更新,简直简单到不能在简单……

条件在此就不提了(对了,先声明一下这是在windows条件下的),主要是你要到版本库(比如paperen本地测试时用的是ci-paperen,就是你使用svn create后的目录中的那个hook),进入hook目录中,这里就是放置hook的地方,而对于我们实现这个功能只需要用到post-commit这个钩子,你可以打开post-commit.tmpl看它的说明,所有钩子都有这么一个tmpl文件,里面都有说明。

确保你已经将subversion的bin目录加到环境变量,就是你可以通过命令行进行svn的操作,比如你进入命令行,直接敲上svn试试,看是否支持这个命令,然后使用

svn update SVN地址

比如paperen的是svn update E:\php\htdocs\ci-paperen

这个命令尝试让版本更新,若看到
C:\Documents and Settings\paperen>svn update E:\php\htdocs\ci-paperen
正在升级 'E:\php\htdocs\ci-paperen':
版本 6。
表示可以了,如果有提示什么版本过低的,可以尝试使用
svn upgrade SVN地址
将版本升级一下然后再去update

那剩下来就好办了,在hook目录中复制post-commit.tmpl再粘贴,将其重名为post-commit.bat(win下),打开它修改内容为

svn update 版本库文件地址 比如paperen的是svn update E:\php\htdocs\ci-paperen(其实与上面在cmd中输入一样)

现在你再在随便一个地方将这个测试的SVN版本checkout一遍(建立副本版本),就是说E:\php\htdocs\ci-paperen 这个是服务端的版本,现在你假设自己也是客户端的版本,比如在桌面又checkout一个,那么当你随便修改这个版本里面的文件或加个新文件,然后提交就会发觉E:\php\htdocs\ci-paperen的文件会自动更新了,so cool!

有句话是paperen是很认同的,要成为一个出色的程序员就需要让更多流程自动化,更懒并且更快。