2012-12-14 9 views
18

Tracker Pivotal e Github hanno grande integrazione: Una volta che è installato, ogni commit che viene preceduto dal Pivotal Tracker ID verrà visualizzato sotto il corrispondente Pivotal biglietteria automatica, per un esempio:Come posso automatizzare l'integrazione Pivotal Tracker e Github?

git commit -am '[#1234567] my new changes' 
git push origin 

aggiungerà il commento ' le mie nuove modifiche 'automaticamente al biglietto pivot 1234567 tra il link di commit github.

Tuttavia, è facile dimenticare di aggiungere l'ID del ticket ogni volta. Come potrebbe essere semplificato/automatizzato?

risposta

18

La soluzione è utilizzare Git-Hook e feature branch. (Il flusso di Github è raccomandato).

è necessario installare questo Git-Hook (copiare un file sul repository locale):

https://github.com/ktamas77/git_hooks

Prima di iniziare a lavorare su un particolare Pivotal Ticket, si crea un ramo prefissati con il Pivotal Tracker ID, per un esempio:

git checkout 1234567_build_new_form 

poi aggiungere tutte le modifiche come faresti normalmente:

git commit -am 'form added' 
git commit -am 'styles added' 
git push origin 

vedrai, lo script git hook estrae automaticamente l'ID Pivotal Tracker dal nome del ramo della funzione e lo aggiunge all'inizio di ogni commento. Puoi comunque sovrascriverlo manualmente (con un altro ID), se lo desideri.

In questo modo non è necessario aggiungere manualmente l'ID pivotal per ogni singolo commit. Funziona anche con GUIS (come GIT Tower) poiché queste GUI utilizzano le librerie/eseguibili GIT standard.

4

Ecco una semplice versione di shell basata sulla soluzione di Tamas. Prende l'ID dalla fine del nome del ramo.

"my-feature-branch-12345678" => "My commit mssg [# 12345678]".

Spostarsi .git/ganci/preparare-commit-msg e renderlo eseguibile:

#!/bin/bash 
if story_id=`git branch | grep -oP '^\*.*\-\K[0-9]+$'` 
then 
    echo "[#$story_id]" >> "$1" 
fi 
+1

Non funziona su OS X Lion perché -P (regex perl) non sono supportati in grep. – Ritchie

4

Installare la gemma 'git-chiave-tracker-integrazione', https://github.com/nebhale/git-pivotal-tracker-integration

Aggiunge comandi per come iniziare e finire a Git per prefissare automaticamente i rami e il commit con l'ID del tracker ID e pubblica anche i messaggi di commit sul tracker. Quando chiami 'git start' estrarrà il master per assicurarti di essere aggiornato, creare un branch per te e iniziare la storia in tracker per te. Quindi il lavoro chiama "git finish" e unirà il ramo per masterizzare e aggiornare il tracker.

3

Le mie squadre utilizzano git_tracker. Ogni sviluppatore deve eseguire

$ git tracker init 

una volta per ogni progetto su Pivotal Tracker. Quindi devono nominare ogni nuovo ramo con una convenzione speciale, inserendolo con l'ID della cronologia di Pivotal Tracker.Ad esempio:

$ git checkout -b the-great-feathure-123456789 

dove 123456789 sarebbe l'ID della cronologia di Tracker Pivotal.

E qui, automaticamente, ogni commit si riferisce alla storia. punto di bonus, se si utilizza GitHub per eseguire le richieste di trazione, si può chiedere revisori che fondono la storia da aggiungere alla fusione commit:

[Fixes #123456789] ... 

In questo modo, non devi mai cliccare sul pulsante Finish, GitHub farà è per te.

+0

Alcuni aggiornamenti. Poiché alcuni dei miei team si sono dimenticati di aggiungere "Correzioni" nel loro messaggio di unione, il dashboard di Pivotal Tracker è stato desincronizzato. Così ho creato [questo] (https://github.com/ssaunier/mergehook) per terminare automaticamente una storia non appena viene premuto il pulsante Unisci! –

0

Sto utilizzando un bookmarklet, che imposta anche il messaggio di commit dal titolo della storia.

[#69609212] Add new Todo 

È possibile ottenere da here

0

Un commento in ritardo, ma forse ancora utile. Volevo la stessa soluzione fornita da @Sjoerd, ma sono un utente mac;)

Il codice risultante è simile al seguente;

story_id=`git symbolic-ref --short -q HEAD | grep -o "^[[:digit:]]*"` 
if [ ! -z "$story_id" -a "$story_id" != " " ] 
then 
    echo "[#$story_id] $(cat $1)" > "$1" 
fi 

noti che anteporre l'ID del problema per il nome del ramo, ma è piuttosto semplice per modificare la regex per abbinare la fine della stringa, non l'inizio. Aggiungiamo anche l'ID del problema all'inizio del commento, in quanto fornisce una panoramica più chiara nel registro di Git. Se lo script di cui sopra è ues, ogni messaggio di commit verrà anteposto con [#<issue ID>], tranne quando il nome del ramo non inizia con un ID problema reale.

Si deve notare che, probabilmente, è meglio se si aggiunge questo codice prima di qualsiasi altro codice nel gancio prepare-commit-msg, come questo si tradurrà in tutti impegna ad essere preposto, anche fonde automatici e simili.

Spero che questo aiuti!

0

Qui è un gioiello che fa esattamente ciò che si vuole:

http://github.com/bogdan/git-storyid

Permette di selezionare una storia da un menu ben formata:

[1] Removing Billing Page 
[2] Welcome Email 
[3] Tag campaign insertion points and campaigns with an identifier 

Indexes(csv): 3 
[campaign-tags 3020407] [#44116647] Initial implementation of campaign tags 
1 file changed, 101 insertion(+), 2 deletions(-) 
Problemi correlati