Cómo abrir el editor de terminal desde el enlace `commit-msg` git

Tengo un gancho commit-msg que valida el contenido del post de confirmación.

Si esa verificación falla, quiero volver a abrir el file de post de confirmación de mi editor de terminal para poder corregir el error.

Tengo lo siguiente, que avisa al usuario cuando falla la validation.

 #!/usr/bin/env bash COMMIT_MSG_FILE="$1" # If we have a STDIN, use it, otherwise get one if tty >/dev/null 2>&1; then TTY=$(tty) else TTY=/dev/tty fi while true; do # read lines from file COMMIT_MSG_LINES=() while IFS= read -r; do COMMIT_MSG_LINES+=("$REPLY") done < <(cat $COMMIT_MSG_FILE) # validate - limit the subject to 50 characters test "${#COMMIT_MSG_LINES[0]}" -le 50 && break; echo -n "Validation failed. Proceed with commit [y/n]? " read REPLY < "$TTY" case "$REPLY" in Y*|y*) exit 0 ;; N*|n*) exit 1 ;; *) $EDITOR $COMMIT_MSG_FILE; continue ;; esac done 

Cualquier respuesta que no sea YyNn debe volver a abrir el editor.

Sin embargo, en su lugar, recibo el siguiente error:

 Received SIGHUP or SIGTERM 

Cuando llamo manualmente al enganche, el script funciona correctamente, así que supongo que esto tiene que ver con el context en el que se invocan los enganches.

¿Cómo puedo hacer que el editor se abra desde dentro de un commit-msg como este?

Resuelto. Redirigir explícitamente el TTY a $EDITOR parece funcionar.

Reemplazado:

 $EDITOR $COMMIT_MSG_FILE 

con:

 $EDITOR $COMMIT_MSG_FILE < "$TTY"