作者:另df外一个自我_198 | 来源:互联网 | 2022-12-12 16:16
我在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文件,它也会尝试删除该文件,并且由于该文件不存在而失败。
如何获取仅检查已更改的PHP文件的信息?
1> kuromoka..:
您可以使用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---名称状态
以下命令正在使用此选项,并检查语法(除去的文件除外):
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
。