2015-03-27 3 views
1

Я запускаю svn 1.8.10 с Apache 2.2.22 на хриплом сервере. Я установил phcs-svn-pre-commit, и он работает через крюк pre-commit. Все работает правильно, за исключением вывода крюка предварительной фиксации. Когда крюк проходит проверку, это изменение совершено. Когда крюк выходит из строя, изменение не совершил, но я получаю это:Apache Subversion pre-commit hook Stderror для ошибки apache.log

$ svn -F svn-commit.tmp commit Mailer.php 
Sending  Mailer.php 
Transmitting file data .svn: E165001: Commit failed (details follow): 
svn: E165001: A repository hook failed 

Ошибки не возвращаются клиенту диверсии, но в настоящее время регистрируются в файле журнала апач. Кто-нибудь знает, где искать, почему stderror собирается apache error.log вместо возврата через клиента?

Репозиторий находится на удаленном сервере, а не локальном.

== апач error.log ==

[Fri Mar 27 13:18:05 2015] [error] [client 66.79.106.82] Could not MERGE resource "/claven/svn/!svn/act/a76ca493-7302-48b3-8cff-39b0abb2bc08" into "/claven/svn/trunk/system/classes/Claven". [409, #0] 
[Fri Mar 27 13:18:05 2015] [error] [client 66.79.106.82] Commit blocked by pre-commit hook (exit code 1) with output:\nExamining trunk/system/classes/Claven/Mailer.php for PHP Syntax\n\n\x1b[1mFILE: trunk/system/classes/Claven/Mailer.php\x1b[0m\n----------------------------------------------------------------------\n\x1b[1mFOUND 1 ERROR AFFECTING 1 LINE\x1b[0m\n----------------------------------------------------------------------\n 49 | \x1b[31mERROR\x1b[0m | Parameter comment must end with a full stop\n----------------------------------------------------------------------\n\nTime: 134ms; Memory: 4.75Mb\n\n [409, #165001] 

== предварительно совершить крюк ==

REPOS="$1" 
TXN="$2" 
PSPC=/usr/bin/scripts/phpcs-svn-pre-commit 

SVNLOOK=/usr/bin/svnlook 
$SVNLOOK log -t "$TXN" "$REPOS" | \ 
    grep "[a-zA-Z0-9]" > /dev/null || exit 1 


CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep "^[U|A]" | awk '{print $2}' | grep \\.php$` 

for FILE in $CHANGED 
do 
echo "Examining $FILE for PHP Syntax" >&2 
    if [ $? -ne 0 ] 
    then 
     echo 1>&2 
     echo "***********************************" 1>&2 
     echo "PHP error in: $FILE:" 1>&2 
     echo `echo "$MESSAGE" | sed "s| -| $FILE|g"` 1>&2 
     echo "***********************************" 1>&2 
     exit 1 
    fi 
done 

"$PSPC" --extensions=php --standard=Claven --tab-width=4 -n "$REPOS" -t "$TXN" >&2 || exit 1 

set -e 

"$REPOS"/hooks/commit-access-control.pl "$REPOS" $TXN "$REPOS"/hooks/commit-access-control.cfg 

exit 0 

ответ

0

В моей ruleset.xml, я добавил имя аргумента в труднодоступный кодогенераторе переменную командной строки в мой пользовательский стандарт. Как только я удалил его, я получил ожидаемый результат от phpcs.

Я не уверен, был ли он неправильным идентификатором или неправильным значением, но устранение этого исправляло проблему.

<!-- <arg name="colors" /> -->