Archivo personalizado posterior a la recepción utilizando GitLab

Estoy tratando de reemplazar mi enlace posterior a la recepción, generado automáticamente por GitLab por un nuevo archivo que habilita el soporte de correo y por lo tanto tiene que activarse "posterior a la recepción".

Esta es la versión anterior de mi archivo:

#!/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

Cuando sustituyo ese archivo por uno nuevo que incluye las líneas mencionadas al final del archivo, GitLab dice: "El proyecto tiene un archivo de recepción posterior no válido" en el área de administración, pero los correos electrónicos se envían correctamente.

¿Sabe cómo manejar el problema del soporte múltiple posterior a la recepción? Por el momento no sé si la parte específica del archivo de gitlab se ejecuta correctamente.

¡Gracias por la ayuda!

Actualizar:

Los scripts dentro de las carpetas se invocan ahora utilizando la solución mencionada a continuación (solicitud de extracción). Pero no entiendo por qué el script estándar "post-receive-email" no envía ningún correo si está incluido en el directorio. Funciona bien si se invoca directamente como posterior a la recepción.

No sé por qué tengo que cambiar el orden, pero lo siguiente funciona para mí (incluso no sé si los trabajos de resque ahora se crean correctamente:

#!/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

Respuestas a la pregunta(3)

Su respuesta a la pregunta