Git: обработчик pre-receive с PHP_CodeSniffer

После перехода с SVN на Git мы потеряли возможность применять наши стандарты кодирования с помощью хука предварительной фиксации на сервер subversion.

С Git у вас есть только перехватчики предварительной фиксации на клиенте, которые не могут быть применены каким-либо образом. Что еще хуже, так это то, что у нас есть разработчики, работающие со всеми тремя основными операционными системами, поэтому ловушка предварительной фиксации, которая работает в Linux или OS X, не работает автоматически в Windows.

Для этого нужно реализовать pre-receive перехватывает сервер, но решение не так просто, как кажется:

Представьте, что разработчик сделал 20 коммитов и хочет их подтолкнуть. Все известные мне хуки pre-commit и pre-receive ( 1 , 2 ) просто проверяют отдельные коммиты, которые в конечном итоге завершатся ошибкой и предотвратят отправку. Теперь разработчик исправляет проблемы, выполняет еще одну фиксацию и снова пытается нажать. Поскольку хуки проверяют одиночные коммиты, он снова потерпит неудачу.

Итак, нам нужен хук pre-receive , который генерирует список всех измененных файлов во всех коммитах, которые будут отправлены, и запускает phpcs только в текущем состоянии.

Есть такой хук сценарий уже существует? Где?

Изменить: Кажется, существует скрипт, который создает этот список файлов - к сожалению, в Python, но его можно перенести. Меня все еще интересуют готовые решения с PHPCS :)

13
задан Community 23 May 2017 в 12:02
поделиться