【问题标题】:Apache Subversion pre-commit hook Stderror to apache's error.logApache Subversion 预提交挂钩 Stderr 到 apache error.log
【发布时间】:2015-03-27 20:46:37
【问题描述】:

我正在一个喘息的服务器上运行 svn 1.8.10 和 Apache 2.2.22。我已经安装了 phpcs-svn-pre-commit 并且它正在通过 pre-commit 钩子工作。除了预提交钩子的输出之外,一切都正常工作。当钩子通过检查时,更改被提交。当钩子失败时,没有提交更改,但我得到了这个:

$ 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

错误不会返回到 subversion 客户端,而是记录在 apache 日志文件中。有没有人知道在哪里查找为什么 stderror 会转到 apache error.log 而不是通过客户端返回?

存储库位于远程服务器上,而不是本地。

== apache 错误日志 ==

[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

【问题讨论】:

    标签: apache svn pre-commit-hook


    【解决方案1】:

    在我的 ruleset.xml 中,我添加了一个参数名称以将命令行变量硬编码到我的自定义标准中。删除它后,我收到了来自 phpcs 的预期输出。

    我不确定是错误的标识符还是错误的值,但删除它可以解决问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 2010-12-13
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多