Arquivo pós-recebimento personalizado usando o GitLab

Eu estou tentando substituir meu gancho pós-recebimento, gerado automaticamente pelo GitLab por um novo arquivo que permite o suporte de email e, portanto, tem que ser acionado "post recebimento".

Esta é a versão anterior do meu arquivo:

#!/usr/bin/env bash

# This file was placed here by GitLab. It makes sure that your pushed commits
# will be processed properly.

while read oldrev newrev ref
do
  # For every branch or tag that was pushed, create a Resque job in redis.
  repo_path=`pwd`
  env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostRe
ceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}
" > /dev/null 2>&1
done

Quando eu substituir esse arquivo por um novo que inclui as linhas acima mencionadas no final do arquivo, o GitLab diz: "O projeto tem um arquivo de recebimento de mensagens inválido" na área de administração, mas os emails são enviados corretamente.

Você sabe como lidar com esse problema de vários apoios pós-recebimento? No momento, não sei se a parte específica do arquivo do gitlab foi executada corretamente.

Obrigado pela ajuda!

Atualizar:

Os scripts dentro das pastas são invocados agora usando a solução abaixo mencionada (solicitação pull). Mas eu não entendo porque o padrão "post-receive-email" -script não envia nenhum email se estiver incluído no diretório. Ele funciona bem se for chamado diretamente como pós-recebimento.

Não sei porque eu tenho que mudar a ordem, mas o seguinte funciona para mim (mesmo eu não sei se os trabalhos de resque agora são criados corretamente:

#!/usr/bin/env bash

repo_path=`pwd`

if [ -d hooks/post-receive.secondary.d ]; then

  for i in hooks/post-receive.secondary.d/*
  do
      [ -x "$i" ] || continue
      # call the hooklet with the same arguments we got
      path=$repo_path"/"$i
      "$path" "$@" || {
          # hooklet failed; we need to log it...
          echo hooklet $i failed
          perl -I$GL_BINDIR -Mgitolite -e "log_it('hooklet $i failed')"
          # ...and send back some non-zero exit code ;-)
          exit 1
      }
  done

fi

while read oldrev newrev ref
do
  # For every branch or tag that was pushed, create a Resque job in redis.
  env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}" > /dev/null 2>&1
done

exit 0

questionAnswers(3)

yourAnswerToTheQuestion