php hook标注,【原创】利用SVN Hook钩子检查PHP语法以及日志注释有效性

什么是钩子(hook):

subversion本身有很好的扩展性,用户可以通过钩子(hook)实现一些自定义的功能。

所谓钩子实际上是一种事件机制,当系统执行到某个特殊事件时,会触发我们预定义的动作,这样的特殊事件在subversion里有很多,默认有如下模板可供选择:

shell> ls /path/to/repository/hooks

post-commit.tmpl

post-lock.tmpl

post-revprop-change.tmpl

post-unlock.tmpl

pre-commit.tmpl

pre-lock.tmpl

pre-revprop-change.tmpl

pre-unlock.tmpl

start-commit.tmpl

其中最常用的是pre-commit.tmpl 和 post-commit.tmpl,也就是提交前后的钩子.

注意:默认的是模板文件,正式使用的时候一定要 mv xxxx.tmpl xxxx 为脚本,然后赋予可执行权限,钩子脚本才能正常工作

下面以pre-commit为例来说明一下如何使用SVN钩子。

SVN钩子典型使用场景:

假设有一个PHP项目使用Subversion做版本控制,使用中发现了一些问题,比如程序员不写日志,或者提交的文件有BOM,或者提交的文件有语法错误,或者提交的文件不符合编码规范等等

问题场景:

1. 提交代码时候,不能写空日志或者日志字符数不能少于N个,则拒绝提交

2. 提交代码时候,如果PHP文件语法有错误,则拒绝提交

解决方法:

利用pre-commit钩子来解决

解决工具:

一款老外基于PHP编写的工具php-svn-hook

如果你shell玩的溜,那就在pre-commit脚本里直接编写对应的事件脚本即可,金牛座对PHP熟,所以很多类似场景都是穿透SHELL来调用PHP脚本达到同样的目的,效率很高,所以根据自己的情况选择就是啦,不纠结~

php-svn-hook:

1. 此软件包面向对象开发

2. 先进的插件思想

3. 非常灵活,任意扩展定制所需的插件

4. 完美融合subversion钩子机制

5. 官方有详细说明文档

部署说明:

1.  默认的软件包只提供了日志注释插件

2.  默认的软件包有些BUG,之后我会在其他地方分享出金牛座修订后的代码,到时群里分享地址给大家

3.  软件包目录结构如下:

bb7d47facacaa99afeeb41df169195f7.png

4.  金牛座扩展了下提交时的检查PHP语法插件,代码如下:

6c33aae0039cef21e0478ec331807c23.png

5.  接下来就是编写pre-commit钩子脚本啦,很简单,看图:

vi  /path/to/svn_store/project/hooks/pre_commit

669fc84109a6827855908fccfcc79f38.png

6. 效果图演示:

0910e47e332d8acee00966f26d77d5b7.png

代码分享:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值