Как php lint только присутствующие и измененные файлы в gitlab? - PullRequest
0 голосов
/ 26 июня 2018

В моем gitlab-ci.yml есть следующая команда, которая запускает 'php -l' для каждого php-файла, который был изменен при фиксации:

test:
  stage: test
  script:
    - for file in $(git diff --name-only HEAD HEAD~1 | egrep "\.php$"); do php -l $file; done

Проблема, с которой я столкнулся, заключается в том, что, если php-файл удален, он тоже пытается это помешать и завершается неудачно, потому что файл не существует.

Как заставить его проверять только измененные файлы PHP, которые есть?

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете использовать опцию git diff --name-status. эта команда возвращает так:

A       a.php # added file
D       b.php # deleted file
M       c.php # modified file

Пожалуйста, смотрите более подробную информацию.
https://git -scm.com / Docs / ГИТ-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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...