2012-07-06 19 views
20

En nuestra empresa, nos estamos moviendo de svn a git. Para el seguimiento de problemas usamos JIRA de Atlassian.Número de problema de Jira en el mensaje de compromiso de git

Ahora queremos hacer cumplir que cada mensaje de confirmación contiene un número de problema (al igual que lo hicimos con svn).

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

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

El problema es que un gancho no se copia cuando se clona un repositorio de git. Por lo tanto, los números de problema en los mensajes de confirmación no se aplican. Eso significa que cuando se empuja un nuevo compromiso aguas arriba, Jira puede no enumerar los cambios en un problema.

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

+0

Todavía no tiene una buena respuesta. ¿Alguien tiene un buen gancho para el servidor? El gancho debe ejecutarse en el origen, es decir, hacia donde presionamos. – meijuh

Respuesta

0

También puede tener ganchos del lado del servidor, pre-recibir-gancho o algo así, sin embargo, esto no es obvio si está acostumbrado a github.

De lo contrario, podría considerar proporcionar una opción de compilación 'instalar-ganchos' (como una tarea de rake, make, o lo que sea), aunque eso me haría sentir un poco 'sucio' porque ahora mi compilación está ligada a el sistema de control de versiones ...

+0

Básicamente lo que quiero es dejar que el servidor que tiene el origen rechace la inserción desde un repositorio local si el mensaje de confirmación no tiene un número de problema. – meijuh

+0

Encontré https://github.com/joyjit/git-jira-hook/blob/master/git-jira-hook. Pero quiere conectarse al servidor JIRA, que no es realmente necesario para lo que quiero. – meijuh

13

Utilicé git-jira-hook y lo modifiqué a mis necesidades, lo que también debería funcionar para usted. Para sus necesidades, solo elimine las partes en las que se registra en Jira para verificar si el número de problema jira regexed del 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 el directorio .git/hooks de cada repositorio a tus necesidades.

En cuanto a la implementación de algo que funcionará para todos, desea utilizar git-jira-hook como el gancho de "actualización" en sus repositorio de flujo ascendente. Esto bloqueará impulsos que contienen mensajes de compromiso que carecen de las referencias correctas de problemas de jira. Dado que es más conveniente obtener comentarios sobre las referencias de problemas faltantes en el momento de la confirmación (en lugar de en el momento del envío), tendrá que hacer que sus desarrolladores instalen git-jira-hook como su enlace commit-msg. Explicaré más adelante cómo esto puede hacerse globalmente.

Así es como he resuelto este problema:

  1. repo privada gancho commit-msg: he modificado git-jira-gancho para comprobar si hay JIRA referencias en la notación que utilizamos. Luego, envié un correo electrónico con instrucciones para que todos explicaran cómo instalar el gancho globalmente, como se explica en this SO question. Si instala el hook globalmente, se usará en todos los clones futuros, y se puede aplicar fácilmente a repositorios ya clonados usando git init.

  2. Enlace de actualización de repositorio en sentido ascendente: Utilicé el script ya modificado de git-jira-hook y lo instalé en cada uno de nuestros repositorios. No pude obtener los bits de autenticación interactiva trabajando en el repositorio de subida (lo vinculé), así que en su lugar creé un usuario Jira de permisos restringidos y codifiqué su autenticación en el script.

+1

También hay muchas horquillas para git-jira-hook que tienen algunas características útiles. Si parece que le falta git-jira-hook, verifique las horquillas para ver si hay alguna característica que necesite. – Freerobots

0

No es un add-on para que: Commit Policy Plugin for JIRA!

No solo comprueba si la clave de problema JIRA se incluye "formalmente" en el mensaje, sino que también comprueba 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 dirigidos a la próxima versión, etc.

enter image description here

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

Puede instalar la secuencia de comandos de enlace para el repositorio bendecido y para cualquier bifurcación. Desafortunadamente, los scripts hook 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/

responsabilidad: este es un complemento comercial y con el apoyo de JIRA, y yo soy un desarrollador que trabaja en ella.

0

Si está utilizando los ganchos predeterminados en la carpeta .git, los cambios que realice no se indexarán, lo que significa que no se pueden desproteger o clonar.

puede mover su gancho de mensaje de confirmación en una carpeta diferente llamada 'ganchos' y confirmarlo para que sobrescriba los ganchos predeterminados de .git.

Mostramos un cuadro de mensaje como un error si commit no contiene un número de problema para que el usuario pueda seguir adelante si no necesita tener un número de rastreador de problemas (funciona en casos de revisión/revisión)

Cuestiones relacionadas