SVN Server的预提交工作正常,但启动提交挂钩不起作用

时间:2018-12-06 21:42:19

标签: svn

我有一个现有的预提交钩子,但工作正常,但是当我使用启动提交钩子时,出现“提交被启动提交钩子(退出代码255)阻止,没有输出。) 开始提交看起来像这样...


#!/bin/sh
REPOS="$1"
USER="$2"
grep $USER /var/svn/repos/testrepo/hooks/owasp_users.txt
GREP_STATUS=$?
if [ $GREP_STATUS -ne 0 ]
then
    echo  $GREP_STATUS 1>&2
    echo  $REPOS-PATH 1>&2
    echo  $USER 1>&2
    exit 1
fi
exit 0

工作前提交看起来像这样...


#!/bin/sh

REPOS="$1"
TXN="$2"

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

GREP_STATUS=$?
if [ $GREP_STATUS -ne 0 ]
then
    echo "Your commit has been blocked because you didn't add a log message." 1>&2
    echo "Please write a log message describing the purpose of your changes and" 1>&2
    echo "then try committing again. -- Thank you" 1>&2
    exit 1
fi
exit 0

该文件具有执行权限,无论开始提交中的代码如何,我都会收到255错误。 我可以只用第一行#!/ bin / sh就可以通过,甚至可以添加一个简单的行返回和255错误返回。

1 个答案:

答案 0 :(得分:0)

我在编辑钩子时错过了转换DOS行尾的方法,快速的dos2unix解决了该问题。由于bash和hooks与CRLF的工作方式不同,因此它的行为很不可思议,这又增加了我在今天浪费的几个小时中看不到stdout的事实。