使用 Shell 编写 hooks 下的 pre-commit 钩子,实现在 git commit 时检查所有的 .php 文件(忽略所有删除状态的文件)是否存在语法错误,如果存在错误,则终止提交,并输出相关错误信息。

#!/bin/bash

# @auth 后三排

# @site https://housanpai.com

# 错误消息内容

IS_ERROR_MESSAGE=()

while read st file

do

# 文件状态为 D 时跳出本次循环

if [ 'D' == "$st" ]

then

echo $file

continue

fi

# 文件末为不是 .php 时输出文件,并跳出本次循环

if [[ ! "$file" =~ (\.php$) ]]

then

echo $file

continue

fi

PHP_LINT=`php -l $file`

# 本文件不存在语法错误,输出结果,并跳出本次循环

if [ 0 -eq $? ]

then

echo $PHP_LINT

continue

fi

# 统计错误消息内容的数据个数

ERROR_COUNT=${#IS_ERROR_MESSAGE[@]}

# 将错误的存放到数组里面

IS_ERROR_MESSAGE[${ERROR_COUNT}]=$PHP_LINT

done <

`git diff --cached --name-status`

EOF

if [ -n "${IS_ERROR_MESSAGE}" ]

then

# 循环输出错误消息,并且指定文字颜色为红色

for ((i=0;i

do

echo -e "\033[31m ${IS_ERROR_MESSAGE[$i]} \033[0m"

done

exit 1

fi

exit 0

git PHP commit 规范,git commit 时自动对所有 php 文件执行语法错误检查相关推荐

  1. 如何配置log4j每天产生日志,并且当天日志大于10M时自动生成另一个文件

    http://bbs.csdn.net/topics/390635339?page=1 如何配置log4j每天产生日志,并且当天日志大于10M时自动生成另一个文件 假设 11-11日 生成comlib ...

  2. iOS架构-静态库.a编译时自动导出.h头文件(24)

    在使用Xcode成功编译一个静态库时,在对应的输出目录下有一个include目录,但是其中没有相关的.h头文件.由于.h文件和 .cpp文件是在同一个目录下,再加上文件数量较多,如果手动的将.h文件导 ...

  3. 消除VS2010创建C/C++项目时自动生成的臃肿文件的方法

     使用VS2010建立C++解决方案时,会生成SolutionName.sdf和一个叫做ipch的文件夹,这两个文件再加上*.pch等文件使得工程变得非常的庞大,一个简单的程序都会占用几十M的硬盘 ...

  4. 有自定义控件的网站项目发布时,“不允许循环文件引用”的错误”的解决方法

    写了一个自定义控件,在项目中使用了多层嵌套母版,在使用各级母版的各个页面中添加了上面的自定义控件,编译测试无错,但发布总因为""不允许循环文件引用"的错误"而过 ...

  5. sqlserver执行更新语句时出现异常,t 附近有语法错误

    之前一直是用的oracle进行开发,偶尔也用用mysql,现在项目中遇到金蝶的k3系统,就不得不用用sqlserver,看似大差不差的sql语言,换个数据库类型其实还是感觉蛮别扭的. 在sqlserv ...

  6. git commit规范 、CHANGELOG生成 和版本发布的标准自动化

    长期以来,大家是不是受限于这种情况:团队中每位成员提交代码时填写的信息随意,没有一定的规范,在出问题后想要定位到某次提交记录时更是难上加难,或者是加上了 commitlint之类的规范,也没有添加ch ...

  7. Git 分支开发规范

    您必须知道的 Git 分支开发规范 Git 是目前最流行的源代码管理工具. 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作. 分支管理 分支命名 ma ...

  8. git 分支命名规范

    主分支 master 主分支,所有提供给用户使用的正式版本,都在这个主分支上发布 开发分支 dev 多人合作的开发分支①每个人开发完成内容合并到此分支,供同事拉取②联调此分支上③联调完毕推到test分 ...

  9. IIS崩溃时自动抓取Dump

    原文:IIS崩溃时自动抓取Dump 背景:在客户现场,IIS有时会崩溃,开发环境没法重现这个bug,唯有抓取IIS的崩溃是的Dump文件分析. IIS崩溃时自动抓取Dump,需要满足下面几个条件 1. ...

最新文章

  1. 黑马程序员___Java基础[02-Java基础语法](一)
  2. 发挥主观能动性,才可以能常人之所不能 - 阿里云MVP 杨洋专访
  3. 需要在Emulator上模拟来电 效果
  4. 031_MessageBox弹框
  5. html测试页,打印机测试页
  6. 使用 Maven 执行 java main class(java应用程序)
  7. hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (背包问题)
  8. xp,win7,win2003,win2008常用命令集
  9. 一些没啥用的大数据组件以及理由(持续更新中)+2020的Gartner曲线
  10. 推理计算过程_初中物理电学计算题第六讲:极值问题推理和限制条件
  11. Qt 中pro文件换行注意的问题
  12. 面试官系统精讲Java源码及大厂真题 - 44 场景实战:ThreadLocal 在上下文传值场景下的实践
  13. Python:使用threading模块实现多线程(转)
  14. 企业之HA~cluster
  15. Java虚拟机中的堆(Heap)
  16. 数据管理之元数据管理
  17. ae怎么卸载已经安装的插件_ae红巨人插件卸载教程!
  18. windows下jenkins批处理执行git pull失败的原因
  19. 跳马周游c++_C++——跳马问题(广搜)
  20. 图像数据标记-图片筛选教程

热门文章

  1. 使用ASP.NET Web API和Handlebars的Web模板
  2. 蚂蚁金服 AntV 开源地理可视化引擎 L7 2.0 发布
  3. TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)
  4. 简单的动态JavaScript Ajax函数
  5. hibernate整合mysql配置文件_springboot整合hibernate配置
  6. 采用计算机数控技术的自动控制系统为,数控机床控制系统
  7. css设置打印样式表,[CSS] 创建打印样式表
  8. 希尔排序是一种稳定的排序算法_排序算法—希尔排序
  9. 在tomcat服务器部署finereport
  10. set 有序吗js_2021了,你的vue实践够熟练了吗?源码思维呢?