2012-02-16 14 views
5

Abbiamo un flusso di lavoro Git piuttosto comune come descritto in this article. Ora sul nostro server di generazione vorremmo creare piani di costruzione per sviluppare, master e per l'ultima versione. Il problema è che il ramo dell'ultima release ha nomi diversi nel tempo (* release - **).Filiale di alias per l'ultima versione in Git

Quali sono i modi per risolvere questo problema? È possibile creare un alias con nome permanente lastrelease che può essere utilizzato da un server di build? Qualunque altra cosa?

risposta

1

È possibile creare riferimenti che puntano ad altri riferimenti, tramite il comando git symbolic-ref. comportamento

Tuttavia, questo non è necessariamente destinato: What's the recommended usage of a Git symbolic reference?

L'altra opzione potrebbe essere quella di avere HEAD del tuo padrone Git punto repository al vostro ultimo release- ramo, e quindi avere la build build server HEAD, develop, e master.

Una terza opzione sarebbe semplicemente avere un ramo release-latest e utilizzare un hook di post-ricezione per aggiornarlo ogni volta che viene aggiornato il ramo corrente release-.

2

Se hai una regola di ordinazione naturale per il tuo rilascio- * nome tag, puoi elencarli e scegliere l'ultimo.

Per esempio, questo può essere raggiunto in questo modo:

git tag -l release-* | sort -V 

opzione -l di tag git è quello di elencare i tag corrispondenti al modello fornito.

sorta -V è una speciale opzione di ordinamento numerico progettata per il vostro caso

Se si vuole scegliere l'ultimo basta aggiungere coda -1:

git tag -l release-* | sort -V | tail -1 

Se si desidera ottenere l'ultima release di una subversion (per esempio 1.x releases) è piuttosto semplice:

git tag -l release-1.* | sort -V | tail -1