tutorial tag delete create crear git hook push jira issue-tracking

delete - git tag sourcetree



Número de problema de Jira en el mensaje de confirmación de git (4)

En nuestra empresa nos estamos moviendo de svn a git. Para el seguimiento de problemas usamos JIRA de Atlassian.

Ahora queremos asegurar que cada mensaje de confirmación contenga un número de problema (como hicimos con svn).

Hemos encontrado el enlace commit-msg que usamos para rechazar un commit si no contiene un número de problema.

JIRA usa Fisheye para escanear el repositorio de git. Si un mensaje de confirmación contiene un número de problema, los cambios se muestran bajo ese problema.

El problema es que no se copia un enganche cuando se clona un repositorio git. Por lo tanto, los números de emisión en los mensajes de confirmación no se aplican. Eso significa que cuando se envía un nuevo compromiso en sentido ascendente, Jira no puede enumerar los cambios en un problema.

La pregunta es; ¿estamos usando Git de alguna manera de la manera incorrecta y hay alguna manera de imponer realmente un número de problema en el mensaje de confirmación? ¿O alguien simplemente tiene un script / gancho (que no sea el gancho commit-msg) que logra esto?


Si está utilizando enganches predeterminados en la carpeta .git, los cambios que realice allí no se indexarán, lo que simplemente significa que no se pueden verificar ni clonar.

puede mover su enganche de mensaje de confirmación en una carpeta diferente llamada ''enganches'' y confirmarla para que sobrescriba los enganches predeterminados de .git.

Mostramos un cuadro de mensaje como un error si la confirmación no contiene un número de problema, por lo que el usuario puede seguir adelante si no necesita tener un número de seguimiento de problemas (funciona en casos de parches / revisiones)


También puedes tener enganches del lado del servidor, antes de recibir el enganche o algo así, sin embargo, esto no es obvio si estás acostumbrado a github.

Si eso falla, podría considerar proporcionar una opción de compilación de ''ganchos de instalación'' (como una tarea de rake, make task, o lo que sea), aunque eso me haría sentir un poco ''sucio'' porque ahora mi compilación está vinculada al sistema de control de versiones ...


git-jira-hook y lo modifiqué según mis necesidades, lo que también debería funcionar para usted. Para sus necesidades, simplemente elimine las partes donde inicia sesión en Jira para verificar si el número de problema de jira expresado en el mensaje de confirmación es válido. Si no te gusta python (git-jira-hook está escrito en python) y prefieres bash, deberías poder adaptar los scripts de ejemplo en cada .git / hooks dir de cada repo a tus necesidades.

En cuanto a implementar algo que funcione para todos, desea utilizar git-jira-hook como el gancho de ''actualización'' en sus repositorios en sentido ascendente. Esto bloqueará las inserciones que contienen mensajes de confirmación que carecen de referencias de problemas de jira adecuadas. Dado que es más conveniente obtener comentarios sobre referencias faltantes de problemas en el momento del compromiso (en lugar de en el momento del envío), deberá hacer que los desarrolladores instalen git-jira-hook como su enlace de confirmación de mensaje. Más adelante explicaré cómo se puede hacer esto globalmente.

Aquí es cómo he resuelto este problema:

  1. Repo privado commit-msg hook: modifiqué git-jira-hook para verificar las referencias de problemas de jira en la notación que usamos. Luego, envié el gancho por correo electrónico con instrucciones para que todos explicaran cómo instalar el gancho globalmente, tal como se explica en esta pregunta . Si instala el gancho globalmente, se utilizará en todos los clones futuros y se puede aplicar fácilmente a los repositorios ya clonados utilizando git init.

  2. Upstream repo update hook: utilicé el script git-jira-hook ya modificado y lo instalé en cada uno de nuestros repositorios. No pude hacer que los bits de autenticación interactiva funcionaran en el repositorio ascendente (con un enlace simbólico), así que en lugar de eso creé un usuario de Jira con permisos restringidos y codifiqué su autenticación en el script.


Hay un complemento para eso: ¡ Complemento de Política de Compromiso para JIRA !

No solo comprueba si la clave de problema JIRA está "formalmente" incluida en el mensaje, sino que también verifica si el problema correspondiente coincide con una consulta JQL. Al usar esto, tiene una multitud de posibilidades, para permitir la comprobación solo contra ciertos tipos de problemas, problemas en ciertos estados, problemas en el sprint actual de Scrum, problemas relacionados con la próxima versión, etc.

Como beneficio adicional, funciona tanto con su sistema de control de versión original ( Subversion ) como con el de destino ( Git ), haciendo que su trabajo sea controlado incluso durante el período de transición.

Puede instalar el script de enlace en el repositorio bendecido y en cualquier bifurcación. Desafortunadamente, los scripts de enganche no se clonan al clonar un repositorio con Git, pero actualmente estamos investigando soluciones para esto.

Documentos completos: http://www.midori-global.com/products/jira-commit-policy-plugin/documentation/

Descargo de responsabilidad: este es un complemento comercial y compatible para JIRA, y soy un desarrollador que está trabajando en ello.