pre-commit hook no funciona

Estoy tratando de agregar un gancho precompromiso a mi proyecto. Cuando ejecuto ./.git/hook/pre-commit , da el resultado correcto.
Mientras que la variable variable OUTPUT está siempre vacía.

 #!/bin/bash OUTPUT=`git diff | flake8 --diff` if [ -z "${OUTPUT}" ] then echo "================== You are awesome ====================" echo "${OUTPUT}" exit 1 else echo "" echo "================== Your code stinks, Fix them ====================" echo "" echo "${OUTPUT}" exit 1 fi exit 1 

Solutions Collecting From Web of "pre-commit hook no funciona"

Los ganchos se ejecutan en un entorno diferente. Especialmente, la RUTA podría no establecerse como la tienes para tu usuario. Intenta usar la ruta completa a los ejecutables que llamas como git y flake8 y ve si funciona en ese momento.

git diff muestra los cambios no escalonados, es decir, los cambios que no irán en la confirmación. Dentro del gancho pre-commit , la salida estará vacía a less que esté haciendo una confirmación parcial.

Lo que quiere es git diff --staged en git diff --staged lugar: le muestra los cambios que está a punto de comprometer, y esta es la parte que desea verificar usando flake8 .

Puede intentar ejecutar el git status dentro del gancho y ver las secciones "Cambios a cometer:" y "Cambios no realizados para la confirmación:" para comprender a qué me refiero.

Además, una de tus exit 1 debería ser una exit 0 ;-).