2012-04-15 10 views
7

estoy desarrollando la validación y el desprendimiento de fibras de utilidad para ser integrado con diversos cometer ganchos, incluyendo Git unoGit gancho pre-commit: obtener la lista de archivos cambiados

https://github.com/miohtama/vvv

Actualmente validadores y borra de son dirigidos contra el conjunto base de código de proyecto en cada commit. Sin embargo, sería mucho más óptimo ejecutarlos solo contra archivos modificados. Para ello, necesitaría saber la lista de archivos modificados en mi Git gancho precommit (en Python)

https://github.com/miohtama/vvv/blob/master/vvv/hooks/git.py

¿Qué opciones tengo para extraer la lista de archivos modificados (en Python si lo que importa)?

Respuesta

5

El gancho pre-commit es un poco de dolor, si realmente quiere hacer las cosas funcionan "derecho", porque lo que está en el árbol de trabajo no es necesariamente lo mismo que lo que es estar comprometido:

$ echo morestuff >> file1; echo morestuff >> file2 
$ git add file1 # but not file2 
$ git commit -m 'modified two files but check in just one' 

puede utilizar git diff-index --cached HEAD para obtener una lista de "lo que está a punto de ser facturado". Ver también, por ejemplo, http://newartisans.com/2009/02/building-a-better-pre-commit-hook-for-git/.

+0

Para el enlace del artículo: es bastante doloroso mantener la segunda copia del repositorio solo para verificar qué archivos han cambiado :( –

+0

No necesita una segunda copia del repositorio, pero puede (dependiendo de lo que están haciendo) necesitan un segundo árbol de trabajo. Existen básicamente dos alternativas: verifique el índice en otro lugar, para que pueda obtener un árbol de trabajo que coincida con lo que se va a controlar, o verifique que el árbol de trabajo actual esté "limpio". ", para que pueda usar el directorio actual (el enlace precompromiso se ejecuta en el árbol de trabajo). – torek

+0

Funciona perfectamente, hasta aquí. Aquí está la solución completa https://github.com/miohtama/vvv/blob/ master/vvv/hooks/git.py –

Cuestiones relacionadas