Travis конфигурация phpcs только для текущих файлов коммитов

Я настраиваю phpcs в travis. Чтобы проверить стандарт PHP-кода при коммите push с travis CI.

Я использую следующий скрипт

script:
- phpcs --standard=PSR2  $(find ./ -name
'*.php')

но этот скрипт проверяет каждый .php файл и запустить тест для всех из них.
Мне нужно, чтобы travis должен запускать команду phpcs только для текущих зафиксированных файлов.

У вас есть какое-либо решение для этого случая. Заранее спасибо.

1

Решение

Вы можете попробовать следующее:

получить последний идентификатор фиксации: (Как получить последний идентификатор фиксации удаленного репо с помощью команды 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)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]