¿Cómo probar el compromiso actual y no el tree de trabajo?

Estoy intentando configurar un gancho de precompromiso para probar mi proyecto antes de que se realice una confirmación, pero no puedo encontrar la forma de asegurarme de que solo HEAD (con parches de la confirmación actual) se testingn y no el actual working_tree ( que en la mayoría de los casos es sucio para mí).

Soluciones encontradas:

Encontré este enlace y terminé haciendo lo siguiente.

http://newartisans.com/2009/02/building-a-better-pre-commit-hook-for-git/

# Checkout a copy of the current index into MIRROR git checkout-index --prefix=$TMPDIR/ -af # Remove files from MIRROR which are no longer present in the index git diff-index --cached --name-only --diff-filter=D -z HEAD | \ (cd $TMPDIR && xargs -0 rm -f --) 

Va a depender de lo que en realidad está verificando y probando. Entonces, si estás tratando de ver si algún contenido no está en los files git diff --cached tienes que hacer git diff --cached y no git diff para que obtengas los cambios apropiados. Del mismo modo, tendrá que ver qué commands está utilizando y demás.

Para la testing de la unidad, puedo sugerir algo como esto (también habrá otras forms):

Escribe un post-commit (no un precompromiso) como ese:

 #!/bin/sh git stash #run unit tests #if tests fail git stash pop --index git reset --soft HEAD~1 exit 0 # if tests pass 

La alternativa de precompromiso sería extraer el índice en un directory separado, ejecutar las testings desde allí. Echa un vistazo a git checkout-index . No lo he usado de esta manera, así que no puedo comentar más sobre él.