2012-09-21 4 views
8

Questa può o non può essere un'idea molto stupida, ma come è possibile configurare un repository git in modo tale che qualsiasi operazione eseguita avvenga automaticamente anche i tag dall'altro repository?Come puoi configurare git per recuperare automaticamente i tag su ogni pull?

Secondo the docs, sembra che si può fare questo su una base reposistory remota per:

remoto. <nome> .tagopt
L'impostazione di questo valore su --no-tags disabilita il tag automatico dopo il recupero da remoto <nome>. Impostandolo a su --tags recupererà ogni tag dal remoto <nome>, anche se sono non raggiungibile dalle diramazioni remote. Il passaggio di questi flag direttamente a a git-fetch (1) può ignorare questa impostazione. Vedi opzioni - tag e --no-tags di git-fetch (1).

C'è un modo per rendere --tags il flag predefinito per recuperare per ogni fetch?

risposta

5

Il recupero dei tag ha un effetto diverso rispetto al recupero dei commit (git fetch), come spiegato in "Does “git fetch --tags” include “git fetch”?".

Quest'ultimo aggiornerà le diramazioni e in effetti recupererà i tag raggiungibili da tali rami aggiornati.
Il primo recupererà tutti i tag, ma non aggiornerà le diramazioni.

Quindi, se i tag sono raggiungibili dai rami che si stanno recuperando, non è necessario includere --tags per impostazione predefinita.

Considerando la grande storia di alcuni pronti contro termine (tra cui il linux one), sempre voglia di prendere tutto tag potrebbe portare alla lista di tag ingombrare (un elenco di tag pollutted da centinaia di tag non necessaria).


Nota che a partire git 1.9/2.0 (1 ° trimestre 2014), git fetch --tags preleverà tutto (come git fetch), più i tag. Vedi "Does “git fetch --tags” include “git fetch”?".

richiesta che tutti i tag essere prelevati dal telecomando in aggiunta a qualsiasi altra cosa è essere recuperati.

modo da poter provare la remote.<name>.tagOpt config option:

git config (--global) remote.<name>.tagOpt --tags 

Impostazione a --tags scaricherà ogni tag da remoto <name>, anche se non sono raggiungibili da responsabili di filiali remote.

+0

tag Recuperare non è il default, così chiaramente Linus pensa che sia una cattiva idea.Tuttavia, il mio gruppo è abituato a BitKeeper e spesso dimentica di recuperare i tag quando _should_ (cioè i tag di rilascio). È possibile eliminare i tag nel caso in cui il volume di tag inutili diventi ridicolo. –

+0

@RossRogers Ma se stanno recuperando i rami di rilascio, otterrebbero anche i tag. – VonC

+0

Il comportamento predefinito è quello di recuperare dal nostro baule git (sì, abbiamo un tronco, anche se le persone possono tirare e spingere l'uno dall'altro). Questo tronco è avvolto in uno strumento interno simile a [Jenkins] (http://jenkins-ci.org/) che integra solo le modifiche dopo aver superato un gruppo di test. Ad ogni modo, normalmente non riescono a "estrarre" i "comunicati" interni contro cui vengono eseguite più regressioni. Normalmente tirano dalla punta del tronco perché è molto ben protetto da regressioni. Vogliamo che prendano sempre i tag con un solo comando, motivo per cui ho fatto questa domanda. –

3

Basta aggiungere questo per la configurazione del telecomando:

fetch = +refs/tags/*:refs/tags/* 
+1

qualsiasi opzione per farlo in globale? non solo per specificare il repository. – zx1986

Problemi correlati