Я думаю, что ircmaxell
имеет отличное замечание - этот вид проверки стандартов должен быть где-то иным, чем хук перед фиксацией, например в среде с непрерывной интеграцией или в крайнем случае, ловушка после фиксации и должна основываться на информации, обеспечивающей , а не блокирующей фиксации!
Имея это в виду, я решил на данный момент , чтобы использовать opt-in подход. Я сконфигурировал ловушку svn pre-commit для поиска в сообщении коммита ключевого слова и запуска phpcs
, если оно было найдено.
В скрипте ловушки перед фиксацией, например /var/www/svn/repos/<reponame>/hooks/
;
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
PHPCS=/usr/bin/scripts/phpcs-svn-pre-commit
if [[ `$SVNLOOK log -t $TXN $REPOS | tr "[:upper:]" "[:lower:]"` =~ "\[?standardcode\]?" ]]; then
# Run the PHP code sniffer
PHPCS_STRICT=`$PHPCS "$REPOS" -t "$TXN"`
if [[ $? -ne 0 ]]; then
echo "$PHPCS_STRICT" >>/dev/stderr
echo "*** Commit blocked - Please fix coding standard errors." >>/dev/stderr
exit 1
fi
fi
exit 0
Примечания:
- Ключевое слово, которое я выбрал, было
[standardcode]
, и сообщение журнала было преобразовано в нижний регистр, чтобы сделать регистр символов нечувствительным к регистру.
- Хук фиксации
phpcs
(/usr/bin/scripts/phpcs-svn-pre-commit
) поставляется с phpcs
(по крайней мере, в CentOS 5.5).
Идея состоит в том, что разработчик может указать ключевое слово в своем сообщении о коммите как своего рода знак чести, но он не обязан проверять свой код, если он не подходит для их фиксации.