Estoy tratando de escribir una secuencia de comandos de tela que hace un git commit
; sin embargo, si no hay nada que confirmar, git sale con un estado de 1
. La secuencia de comandos de implementación lo toma como no exitoso y se cierra. Quiero detectar real fallas de compromiso, por lo que no puedo simplemente dar a la tela una manta ignorar por git commit
fallas. ¿Cómo puedo permitir que las fallas de commit vacío se ignoren para que la implementación pueda continuar, pero aún detectar los errores causados cuando falla una confirmación real?¿Cómo git no cometer nada sin un error?
def commit():
local("git add -p && git commit")
Tenga en cuenta que 'git diff' es un comando de" porcelana "que no debe usarse para scripts. Lo que probablemente desee es 'git diff-index --quiet HEAD || git commit -m 'bla''. Ver también [esta respuesta] (http://stackoverflow.com/a/2659808/659002). – Holger
Para explicar las cosas más, el problema con 'git diff --quiet --exit-code --cached' es que se evaluará a' 1' (falso) solo para los archivos modificados que no se han configurado para la confirmación (archivos no agregados)) El comentario votado es la mejor solución para dar cuenta de nuevos archivos y eliminaciones. –
El comentario sobre 'git diff-index --quiet HEAD || git commit -m 'bla'' debería ser una respuesta en esta pregunta. –