如何用phplint在gitlab中仅显示和修改文件?

Dav*_*vid 2 php git 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
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果删除了一个php文件,它也会尝试删除该文件,并且由于该文件不存在而失败。

如何获取仅检查已更改的PHP文件的信息?

kur*_*oka 5

您可以使用git diff --name-status选项。该命令返回如下:

A       a.php # added file
D       b.php # deleted file
M       c.php # modified file
Run Code Online (Sandbox Code Playgroud)

请查看更多详细信息。
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
Run Code Online (Sandbox Code Playgroud)

git diff --name-status HEAD HEAD~1返回反转的文件状态,所以我做了git diff --name-status HEAD~1 HEAD