2012-03-16 19 views
6

Tenemos un buen gancho precompromiso para GIT, así como un buen commit-msg. El enlace precompromiso realiza una validación de sintaxis y commit-msg hace alguna otra lógica comercial. Todo funciona bien.Gancho de precompilación condicional controlado desde la línea de comando para GIT: ¿Es posible?

Sin embargo, me gustaría agregar la validación de Estándares de codificación al gancho precompromiso. De hecho, ya está agregado. Sin embargo, no quiero hacer cumplir estrictamente a nuestros desarrolladores para que coincidan con los estándares de codificación, de manera predeterminada me gustaría validar el código para los estándares, pero si quisieran aprobar la Validación de estándares de codificación, me gustaría dejarlos. pasar añadiendo un parámetro durante la confirmación.

¿Es posible capturar/interpretar cualquier parámetro de línea de comando que fue dada durante comprometerse a GIT a nivel gancho pre-commit con el fin de omitir la codificación de validación estándar en la pre-commit gancho (opcionalmente?)

¿O solo es posible en el enlace de mensaje previo a la confirmación mediante el análisis del mensaje de compromiso para una subcadena específica?

Comparta sus mejores prácticas sobre cómo (y dónde) para crear código condicional controlado por línea de comando usando git pre-commit hook (u otros ganchos git).

Respuesta

10

Una forma sencilla de hacer esto sería simplemente usar una variable de entorno:

STANDARDS=no git commit 

y luego en el guión (ejemplo, en Bash, pero se podía leer env vars en el idioma que su gancho está en) :

if [ "$STANDARDS" != "no" ]; then 
    ...check for code standards... 
fi 

Git no suele pasar información más allá de lo que aparece en man githooks a cada gancho, por lo que tratar de hacerlo con una "opción de línea de comandos" a la git commit --no-standards o algo así no funcionaría.

3

Para añadir a lo que dijo @Amber, usted debe ser capaz de hacer:

STANDARDS=no git commit -m "committing" 

y tienen adecuada gancho que verá la variable de entorno y tomar decisiones antes de comprometerse.

No es por supuesto el --no-verify, pero supongo que no quiere saltar la totalidad de pre-commit:

-n
--no-verificar

Esta opción no pasa por el ganchos pre-commit y commit-msg. Consulte también githooks (5).

Cuestiones relacionadas