php - 如何 php lint 仅在 gitlab 中存在和修改文件?
问题描述
我的 gitlab-ci.yml 中有以下命令,它在每个更改提交的 php 文件上运行“php -l”:
test:
stage: test
script:
- for file in $(git diff --name-only HEAD HEAD~1 | egrep "\.php$"); do php -l $file; done
我遇到的问题是,如果删除了 php 文件,它也会尝试对其进行 lint,但由于文件不存在而失败。
我怎样才能让它只检查存在的已更改的 PHP 文件?
解决方案
您可以使用git diff --name-status
选项。该命令返回如下:
A a.php # added file
D b.php # deleted file
M c.php # modified file
请查看更多详细信息。
https://git-scm.com/docs/git-diff#git-diff---name-status
以下命令使用此选项并检查除已删除文件之外的语法:
test:
stage: test
script:
- for file in $(git diff --name-status HEAD~1 HEAD | egrep "^[ACMR].*\.php$" | cut -c 3-); do php -l $file; done
git diff --name-status HEAD HEAD~1
返回反转的文件状态,所以我做了git diff --name-status HEAD~1 HEAD
.
推荐阅读
- python - Python:如何访问返回值以放入表中?
- python - 集成导致 TypeError:“numpy.float64”对象不能解释为整数
- java - 使用 Windows 命令提示符创建 XLDeploy dar 文件
- javascript - Google Apps 脚本通过电子表格发送电子邮件不起作用
- php - 如何每个 ip/session 只更新一次列?
- javascript - 将多个 && 条件合并为 1
- java - 处理 - 椭圆/矩形碰撞的方法
- reactjs - 在 Netlify 上托管时,React-media 查询不适用于页面加载的大屏幕
- chart.js - chartjs中yaxis中的刻度对齐
- mysql - COUNT 未返回预期值