¿Cuál es la forma correcta de verificar los datos de confirmación en Git?

13

Mi objetivo es verificar los datos de confirmación que no cumplen ciertos requisitos y luego rechazar la confirmación que se está creando o enviar al repositorio remoto.

El problema de hacer un enlace de confirmación previa es que es difícil de implementar para muchas personas que tienen que actualizar manualmente su archivo de enlace de confirmación previa. Además, Git no te permite tener submódulos en la carpeta .git, lo cual hubiera sido muy fácil de implementar pero, por desgracia.

La otra opción que veo es realizar la comprobación Creo que el enlace de actualización en el lado remoto, que verificará cada confirmación que está presionando un dev y rechazará la inserción si cualquiera de las confirmaciones falla las pruebas.

¿Alguien tiene alguna idea sobre este problema? Y si es así, ¿podría proporcionarme o señalarme un ejemplo de script de enlace de actualización? Estoy un poco confundido en cuanto a cómo funciona.

    
pregunta dalanmiller 13.07.2012 - 00:21

2 respuestas

7

primero debe averiguar si no desea que se confirme el código no calificado o que se lo envíe / publique nuevamente hacia arriba.

en mi opinión, la última es más factible.

con un DVCS como git. realmente no quieres controlar cómo cada desarrollador usa su repositorio local. y realmente no puedes tener control sobre eso.

un gancho de pre-compromiso funciona bien como validación básica y desinfección, si todos los involucrados lo aceptan voluntariamente. En realidad lo aplicamos libremente en nuestra empresa. sin embargo, siempre se puede omitir con git commit --no-verify .

el gancho del lado del servidor, por otro lado, no interviene en el flujo de trabajo local de un programador, y se asegura de que otros en el proyecto basen su trabajo solo en el código que cumpla con ciertos criterios. normalmente esto es lo que las personas buscan cuando implementan las verificaciones automáticas.

Esta validación automática no pretende reemplazar el control de calidad, supongo, que generalmente se logra con la revisión del código o la programación de pares.

Si está familiarizado con github , notará que la "solicitud de extracción" es otro enfoque para este problema. muchos proyectos y compañías de código abierto utilizan la solicitud de extracción de github para el control de permisos de sucursales y la revisión de códigos. pero necesita interacción humana, por lo tanto, puede que no sea lo que estás pidiendo.

    
respondido por el Huang Tao 13.07.2012 - 10:47
1

Como ya ha señalado, hacer esto en el cliente, si bien es técnicamente posible, probablemente no sea práctico. Además, muchos usuarios de git realizan trabajos interinos, por lo que tener controles draconianos en cada compromiso es contraproducente.

La solución estándar sería un gancho del lado del servidor. Probablemente configuraría un gancho pre-receive , que se ejecuta cada vez que se produce un impulso, y que puede rechazar el impulso si así lo desea. El resto depende de los controles exactos que desee realizar.

Esto se explica en Pro Git , capítulo 7.3 Personalización de Git - Git Hooks .

    
respondido por el sleske 13.07.2012 - 10:31

Lea otras preguntas en las etiquetas