Как проверять линтом только измененные файлы при pre-push?
Как написать условный скрипт для pre-push файла, который будет запускать линт только на те файлы, которые были изменены, а не на весь проект?
Дополнительно:
а почему pre-push, а не pre-commit?
Ответы:
https://www.npmjs.com/package/lint-staged
- + husky
Что-то вроде такого:
git ls-tree --name-only -r origin/HEAD | egrep '.(js|ts)$' | xargs npx eslint |
git ls-tree --name-only -r origin/HEAD | egrep '.(js|ts)$' | xargs npx eslint
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для проверки линтом только измененных файлов перед отправкой коммита (pre-push), можно воспользоваться следующим подходом:
1. Необходимо создать скрипт, который будет проверять только измененные файлы. Для этого можно воспользоваться командой `git diff --name-only origin/master`, которая позволяет получить список измененных файлов относительно ветки `origin/master`.
2. Далее, можно использовать этот список файлов для запуска линтера только на них. Для примера, давайте рассмотрим использование линтера для PHP файлов.
Пример скрипта для проверки измененных PHP файлов перед отправкой коммита:
#!/bin/bash FILES=$(git diff --name-only origin/master | grep '\.php$') if [ -n "$FILES" ]; then for FILE in $FILES; do php -l $FILE if [ $? -ne 0 ]; then echo "PHP linting failed for file: $FILE" exit 1 fi done fi
3. Сохраните этот скрипт в файл `pre-push.sh` и добавьте права на исполнение: `chmod +x pre-push.sh`.
4. Далее, необходимо добавить этот скрипт в хук pre-push вашего репозитория. Для этого выполните команду: `ln -s ../../pre-push.sh .git/hooks/pre-push`.
Теперь при каждой попытке отправки коммита (git push), скрипт будет запускаться автоматически и проверять только измененные PHP файлы на наличие ошибок линтера. Если какой-либо файл не проходит проверку, коммит не будет отправлен, и вы получите уведомление о необходимости исправления ошибок.
Надеюсь, это поможет вам эффективно проверять линтером только измененные файлы перед отправкой коммита!