Git提交文件之前强制对php文件进行格式化

要执行这个操作需要掌握两个知识点

  1. php语法检查工具php-cs-fixer(使用方法自行百度)。
  2. git钩子的使用方法(如果不懂就继续百度吧)。

具体操作方式:

  1. 在一个git项目的根目录下进入钩子目录编辑提交之前的钩子文件
cd .git/hooks

大约能看到以下几个钩子文件,是git提供的一些例子。去掉.sample后缀名之后都可以运行。

├── applypatch-msg.sample  
├── commit-msg.sample
├── post-update.sample
├── pre-applypatch.sample
├── pre-commit.sample
├── pre-push.sample
├── pre-rebase.sample
├── pre-receive.sample
├── prepare-commit-msg.sample
└── update.sample

在文件列表中,pre-commit.sample 文件就是执行 git commit命令之前的钩子文件。系统会先调用此文件,我们就在这个文件里面处理那些已经被add到暂存区的php文件。

1. 在当前目录创建一个pre-commit文件,并将以下代码复制进去,并保存。

#!/usr/bin/env bash
 
while read -r file;
do
  file=${file:1}

  #只处理后缀名为.php的文件
  if [[ $file = *.php ]];
  then
      #执行语法检查并将不符合php代码规范的文件执行强转
      php-cs-fixer fix $file;

      #重新执行git命令,将强转之后的文件重新加入到缓存区
      git add $file;
  fi
done < <(git diff --cached --name-status --diff-filter=ACM)

#执行完成,退出此脚本
exit 0

注意:php-cs-fixer命令需要配置好全局变量,否则的话,请写全路径,避免找不到php-cs-fixer命令而报错

然后,我们再执行git提交命令的时候,就会把php文件全部执行一遍格式转化然后再提交啦。
git commit -m 'xxxxxxxxxxx'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容