hooks / post-receive:语法错误:“(”意外(期待“完成”)

时间:2013-02-11 08:07:19

标签: git bash

我正在GIT写一个接收后脚本。

我附上了它的最小版本,但也失败了:

generate_email()
{
    for user in $(git config --get-all notifications.users); do
        unset files_to_notify
        for filter in $(git config --get-all notifications.$user); do
            files_to_notify=" $files_to_notify $(git diff-tree --no-commit-id \
                --name-only -r $newrev | grep $filter) "
        done
        files_to_notify=( $files_to_notify )
        if [ -n "$files_to_notify" ]; then
            echo ${files_to_notify[*]}
        fi
    done
}

while read oldrev newrev refname
do
    generate_email $oldrev $newrev $refname
done

当我试图在调用此脚本时推送到git服务器时,我收到以下消息:

remote:hooks / post-receive:10:hooks / post-receive:语法错误:“(”意外(期待“完成”)

当我尝试在命令行中运行它时,脚本无需此消息即可正常工作。

任何想法?

谢谢,

Elyashiv

1 个答案:

答案 0 :(得分:3)

两种可能性:

  1. #!/usr/bin/env bash添加到脚本顶部以确保脚本由bash而不是sh运行,因为您使用的是数组bash扩展

  2. 停止使用阵列,因为您不能以任何方式使用它,而这些方式很难用简单的以空格分隔的字符串替换。这就是你首先构建阵列的方式。