GIT HOOK para verificar la palabra key "PROMOCIONAR" en el post cuando se ejecuta GIT MERGE

Necesito verificar la palabra key "PROMOCIONAR" en el post siempre que haya una fusión con el maestro y otra twig

Ejemplo: si el command git es:
git merge -m "MERGE COMMIT 1 FROM BRANCH1 TO MASTER" f145cd536463e595f1e4306eeec6f92a9cd6c734 La combinación debe salir con un error "PROMOTE la palabra key no configurada en el post de combinación"

git merge -m "PROMOTE COMMIT 1 FROM BRANCH1 TO MASTER" f145cd536463e595f1e4306eeec6f92a9cd6c734 La combinación debe ser correcta.

El problema con el command de merge es que no se garantiza la creación de un compromiso a less que use --no-ff . Por ejemplo, puede get el siguiente resultado de su command.

 git merge -m "MERGE COMMIT 1 FROM BRANCH1 TO MASTER" Updating f145cd5..cd6c734 Fast-forward (no commit created; -m option ignonetworking) 

Consulte esta publicación y este PDF para get una gran explicación de avance rápido vs no avance rápido al fusionarse. Algunas personas piensan -no-ff historia de los "fangoes" y definitivamente rompe el " git-bisect y la " git blame . Sin embargo, otros aman --no-ff porque permite combinar los comentarios y la visualización de lo que sucedió en una twig de características.

Si decide usar --no-ff , puede configurar git para que solo lo haga --no-ff globalmente o por twig. Use este command para configurar --no-ff en el maestro solamente.

 git config branch.master.mergeoptions "--no-ff" 

Volvamos a tu problema original.

Git admite ganchos que se pueden usar para verificación y flujo de trabajo. Los enganches se pueden ejecutar en el cliente o server local donde los desarrolladores envían los cambios. Una expresión regular que utiliza el enlace de cliente commit-msg , como esta, parece perfecta. Sin embargo, git does no tiene un enlace previo a la fusión que podría utilizar para rechazar la combinación. Vea aquí una list de ganchos y sus commands de disparo. Lo que es peor, notará que la git merge no desencadena ninguno de los enganches incluso si fuerza un commit con --no-ff .

Entonces tienes dos opciones. Son los mismos que los mencionados en esta publicación, que explora el tema aún más sin mejores soluciones.

  • Ponga un gancho de actualización, como este, en un server de git donde los desarrolladores están presionando. El problema con este enfoque es que no evita que hagan malos comentarios. Este enfoque solo mantiene los malos comentarios fuera del server. Los desarrolladores tendrán que trabajar mucho para arreglar el historial antes de que puedan presionar al server si no lo hacen bien la primera vez.
  • Escriba (y distribuya, y mantenga …) un contenedor Git-Merge que hará ese control a nivel de repository local. Michael J Gruber tiene un gancho previo a la fusión en su horquilla git aquí .