少用的 - 设定钩子

  • 作者:KK

  • 发表日期:2015.12.27


钩子就类似于编程中的"事件监听",比如在页面上用JS监听了一个DOM的click事件,当用户click的时候就触发你的click事件回调函数

SVN提供了一些"事件",我们需要设置一些钩子才可以监听这些事件并做事情,比如自动检查代码啦,自动转换些配置啦,自动运行测试用例等等你爱咋咋滴

进入项目的根目录,选择TortoiseSVN - 设置 - 钩子脚本 - 增加,弹出一个标题叫设置钩子脚本的设置窗口,这里有两个填写项

  • 工作副本路径:这个就是你要监听事件的目录,比如你的SVN项目路径是E:\project,那就可以填这个路径,或者填里面的子目录都行,只要处于SVN副本环境下

  • 要执行的命令行:这里我们填写E:\on-commit.bat,然后顺便在E盘下创建这个bat文件,编写一些内容,如下:

    if exist "E:\project\config.xml" (
    	exit 0
    ) else (
    	echo '缺少配置文件,禁止提交!' >&2
    	exit 1
    )
    

右上角有一个下拉选项,选择提交之前的钩子,意思就是在提交东西到仓库的时候触发你的bat脚本运行

然后下面还有三个钩选项,钩选等待脚本运行结束总是执行这些脚本,最终设置如我下图这样:

然后确定确定保存啦

接下来你移除你的E:\project项目目录一个叫config.xml的文件(如果有这个文件的话,没有就算了)

修改目录下任意文件内容,比如随便打开个文件拍个空格,然后就有红色叹号了

再在根目录下空白处提交文件,点确定提交,这时候你会见到个黑窗口闪了一下,是它!是它!就是它!bat运行起来啦!

bat的脚本内容就是检测是否存在config.xml这个文件,由于不存在,所以返回了非0的结果码,并输出了一些信息.反正你就是提交失败,必须让bat返回0才可以正常提交

所以你可以试下补个config.xml回去再提交应该就可以了


所有成员提交都执行钩子

上面的操作只是你本机设置了E:\project执行钩子,但是在其他开发人员的电脑上不一定是E:\project呀,可能是D盘什么的呀,所以这个设置只是你本机的设置

实际上你经常烦恼有的成员提交代码有很明显的错误,他们有时懒得测试就提交上来了,真希望在他们提交前就检查

所以我们要通过一种设置来使得所有开发人员都在提交时可以触发钩子脚本