2012-07-06 22 views
20

Nella nostra azienda ci stiamo spostando da svn a git. Per il monitoraggio dei problemi utilizziamo JIRA da Atlassian.Numero di rilascio Jira nel messaggio di commit Git

Ora vogliamo applicare che ogni messaggio di commit contiene un numero di rilascio (proprio come abbiamo fatto con svn).

Abbiamo trovato il gancio di commit-msg che usiamo per rifiutare un commit se non contiene un numero di rilascio.

JIRA utilizza Fisheye per eseguire la scansione del repository git. Se un messaggio di commit contiene un numero di rilascio, le modifiche vengono visualizzate sotto quel problema.

Il problema è che un hook non viene copiato quando un repository git viene clonato. Quindi i numeri di emissione nei messaggi di commit non vengono applicati. Ciò significa che quando un nuovo commit viene spinto a monte, Jira potrebbe non elencare le modifiche in un problema.

La domanda è; stiamo usando Git in qualche modo nella maniera sbagliata e c'è un modo per applicare davvero un numero di problema nel messaggio di commit? O qualcuno ha semplicemente uno script/hook (diverso dal hook di commit-msg) che realizza questo?

+0

Ancora non avendo una buona risposta. Qualcuno ha un buon hook sul lato server? Il gancio deve essere eseguito sull'origine, cioè dove spingiamo. – meijuh

risposta

0

È possibile avere anche hook sul lato server, gancio di pre-ricezione o qualcosa del genere, tuttavia questo non è ovvio se si è abituati a github.

In caso contrario, potrei considerare di fornire un'opzione di compilazione "install-hooks" (come rake task, make task o qualsiasi altra cosa), anche se ciò mi farebbe sentire un po '"sporco" perché ora la mia build è legata a il sistema di controllo versione ...

+0

Fondamentalmente quello che voglio è lasciare che il server che ha l'origine rifiuti la spinta da un repository locale se il messaggio di commit non ha numero di rilascio. – meijuh

+0

Ho trovato https://github.com/joyjit/git-jira-hook/blob/master/git-jira-hook. Ma vuole connettersi al server JIRA, che non è realmente necessario per quello che voglio. – meijuh

13

Ho utilizzato git-jira-hook e modificato per le mie esigenze, che dovrebbe funzionare anche per voi. Per le tue esigenze, è sufficiente rimuovere le parti in cui si registra in Jira per verificare se il numero di rilascio jira ripreso dal messaggio di commit è valido. Se non ti piace Python (git-jira-hook è scritto in python) e preferisci bash, dovresti essere in grado di adattare gli script di esempio alla directory .git/hooks di ciascun repository in base alle tue esigenze.

Per implementare qualcosa che funzioni per tutti, si desidera utilizzare git-jira-hook come hook di "aggiornamento" sui repository upstream. Questo bloccherà le push che contengono messaggi di commit che non hanno riferimenti ai numeri jira appropriati. Dal momento che è più conveniente ricevere feedback sui riferimenti dei problemi mancanti al momento del commit (piuttosto che al momento del push), è necessario che gli sviluppatori installino git-jira-hook come hook di commit-msg. Spiegherò in seguito come ciò possa essere fatto a livello globale.

Ecco come ho risolto questo problema:

  1. repo privato gancio commettere-msg: ho modificato git-jira ricevitore per verificare la presenza di emissione jira riferimenti nella notazione che usiamo. Quindi, ho inviato via email il gancio con le istruzioni a tutti che spiegavano come installare l'hook a livello globale, come spiegato in this SO question. Se si installa l'hook globalmente, verrà utilizzato in tutti i futuri cloni e può essere facilmente applicato a repository già clonati utilizzando git init.

  2. Gancio aggiornamento repository upstream: Ho usato lo script git-jira-hook già modificato e l'ho installato in ciascuno dei nostri repository. Non sono riuscito a far funzionare i bit di autenticazione interattiva sul repository upstream (collegato in modo simbolico), quindi ho creato un utente con autorizzazioni limitate di Jira e ho codificato con difficoltà la loro autenticazione nello script.

+1

Ci sono anche molte forcelle per git-jira-hook che hanno alcune funzioni utili. Se git-jira-hook ti sembra carente, controllerò le forche per vedere se ci sono funzionalità che ti servono. – Freerobots

0

C'è un add-on per questo: Commit Policy Plugin for JIRA!

Non solo controlla se la chiave di emissione JIRA è "formalmente" inclusa nel messaggio, ma controlla anche se i problemi corrispondenti corrispondono a una query JQL. Usando questo, hai una moltitudine di possibilità, per consentire il controllo solo contro determinati tipi di problemi, problemi in determinati stati, problemi nello sprint Scrum corrente, problemi che riguardano la prossima versione e così via.

enter image description here

Come bonus, funziona sia con il vostro (Subversion) e il sistema di controllo versione di destinazione originale (Git), rendendo il vostro lavoro a controllo anche durante il periodo di transizione.

È possibile installare lo script di hook sul repository benedetto e su qualsiasi fork. Sfortunatamente, gli script di hook non vengono clonati durante la clonazione di un repository con Git, ma al momento stiamo studiando soluzioni alternative per questo.

documentazione completa: http://www.midori-global.com/products/jira-commit-policy-plugin/documentation/

Esonero di responsabilità: questo è un commerciale e supportato add-on per JIRA, e io sono uno sviluppatore che lavora su di esso.

0

Se si utilizza ganci di default nella cartella .git poi le modifiche apportate in là non sarebbero stati indicizzati che semplicemente significa che non possono essere controllati fuori o clonati.

è possibile spostare il gancio del messaggio di commit in una cartella diversa denominata "ganci" e impegnarlo in modo che sovrascriva i ganci predefiniti da .git.

Mostriamo una finestra di messaggio come un errore se il commit non contiene un numero di rilascio in modo che l'utente possa ancora andare avanti se non ha bisogno di avere un numero di tracciamento del problema (funziona in casi di patch/hotfix)