Я настраиваю phpcs в travis. Чтобы проверить стандарт PHP-кода при коммите push с travis CI.
Я использую следующий скрипт
script:
- phpcs --standard=PSR2 $(find ./ -name
'*.php')
но этот скрипт проверяет каждый .php
файл и запустить тест для всех из них.
Мне нужно, чтобы travis должен запускать команду phpcs только для текущих зафиксированных файлов.
У вас есть какое-либо решение для этого случая. Заранее спасибо.
Вы можете попробовать следующее:
получить последний идентификатор фиксации: (Как получить последний идентификатор фиксации удаленного репо с помощью команды curl-like?)
git log --format="%H" -n 1
Затем получите файлы в последнем коммите 🙁Как вывести список всех файлов в коммите?)
git diff-tree --no-commit-id --name-only -r `git log --format="%H" -n 1`
Вы можете видеть, что предыдущая команда используется здесь. Первая часть перед backtits нуждается в идентификаторе коммита, чтобы вывести список файлов. Этот идентификатор фиксации находится в первой команде.
И затем, если вы хотите только php-файлы, вы можете использовать grep:
git diff-tree --no-commit-id --name-only -r `git log --format="%H" -n 1` | grep .php
Вывод на одном из моих проектов PHP:
app/Http/Controllers/BarterController.php
app/Http/Controllers/HomeController.php
app/Talk.php
resources/views/profiles/index.blade.php
resources/views/talks/show-comments.blade.php
Просто замени свою команду $(find ./ -name '*.php')
с тем, что я дал выше, и это должно работать. Ваша команда станет следующей:
phpcs --standard=PSR2 $(git diff-tree --no-commit-id --name-only -r `git log --format="%H" -n 1` | grep .php)
Других решений пока нет …