代码之家  ›  专栏  ›  技术社区  ›  David

如何在Gitlab中只显示和修改php lint文件?

  •  0
  • David  · 技术社区  · 6 年前

    我的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文件?

    1 回复  |  直到 6 年前
        1
  •  4
  •   kuromoka    6 年前

    你可以用 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 .