2012-01-02 15 views
6

Usiamo hg per controllare le sorgenti di un grande progetto. Ogni volta che rilasciamo una versione, taggliamo la versione in hg.Hg - Trova i tag che "coprono" il file specifico versione

Ora dire che prendo una revisione specifica (dove ho risolto un bug per esempio). Voglio sapere quali versioni contengono questa correzione, cioè quali tag "coprono" questa revisione.

Come si trova questo? Nei tag hg sembra riferirsi solo al changeset con tag. Ricordo che in ClearCase anche tutti gli antenati della revisione con tag sarebbero contrassegnati, c'è un modo per vedere queste informazioni in hg?

Grazie!

+0

Il tasso pigro ha colpito il chiodo sulla testa, ho modificato il suo modello a "{node} - {tag} \ n "che mi consente di visualizzare rapidamente tutte le versioni che contengono un determinato changeset. Brillante! – YMA

risposta

5

Le revisioni senza ulteriori estensioni possono darti qualcosa. come

hg log -r "id(hash):tip and tag()" o più brevi e più bello (forse) versione hg log -r "descendants(hash) and tag()"

Basta e l'esempio di revset accorciato dal mio repo con unioni dopo la revisione in questione

>hg glog -r "descendants(c9e3b41ec78f)" 
@ changeset: 65:f202d72d6397 
| tag:   tip 
| parent:  63:c778bae76563 
| user:  Alex Bream 
| date:  Wed Nov 09 21:42:50 2011 +0600 
| summary:  2-9 яюыэюёЄ№■ фю 2769 
| 
| o changeset: 64:625d08492555 
| | branch:  Cleanup 
| | parent:  62:eed6619dadb8 
| | user:  Alex Bream 
| | date:  Wed Nov 09 21:38:44 2011 +0600 
| | summary:  ╟рўшёЄър яю 1-1 155 
| | 
o | changeset: 63:c778bae76563 
|\| parent:  61:e7ae9e5f725a 
| | parent:  62:eed6619dadb8 
| | user:  Alex Bream 
| | date:  Wed Nov 09 21:33:22 2011 +0600 
| | summary:  Merge with Cleanup 
| | 
| o changeset: 62:eed6619dadb8 
| | branch:  Cleanup 
| | parent:  59:c9e3b41ec78f 
| | user:  Alex Bream 
| | date:  Thu Mar 03 19:19:34 2011 +0500 
| | summary:  ╟рўшёЄър яю 1-1 131 
| | 
o | changeset: 61:e7ae9e5f725a 
| | user:  Alex Bream 
| | date:  Thu Mar 03 05:40:34 2011 +0500 
| | summary:  2-9 яю 2745 
| | 
o | changeset: 60:1393fe759096 
|\| parent:  57:a38258cac9b8 
| | parent:  59:c9e3b41ec78f 
| | user:  Alexander 
| | date:  Thu Mar 03 04:59:22 2011 +0500 
| | summary:  Merge ё ўшёЄшыъющ 
| | 
| o changeset: 59:c9e3b41ec78f 
| | branch:  Cleanup 
| | user:  Alexander 
| | date:  Thu Mar 03 04:54:11 2011 +0500 
| | summary:  ╟рўшёЄър яЁюыюу яюыэюёЄ№■ 
| | 

E uscita il confronto di due forme di revsets (stessa uscita comunque)

discendenti()

>hg log -r "descendants(c9e3b41ec78f)" --template "{rev}:{node|short}\n" 
59:c9e3b41ec78f 
60:1393fe759096 
61:e7ae9e5f725a 
62:eed6619dadb8 
63:c778bae76563 
64:625d08492555 
65:f202d72d6397 

gamma diretto definizione

>hg log -r "id(c9e3b41ec78f):tip" --template "{rev}:{node|short}\n" 
59:c9e3b41ec78f 
60:1393fe759096 
61:e7ae9e5f725a 
62:eed6619dadb8 
63:c778bae76563 
64:625d08492555 
65:f202d72d6397 
+0

Suppongo che potrebbe funzionare, ma da quello che raccolgo dovresti prendere ogni tag, tracciare i discendenti e vedi se il tuo changeset è lì dentro? – YMA

+0

@ YMA - no, come ** I ** leggi il tuo testo devi usare l'ordine inverso - trova i tag ** dopo qualche revisione ** - "... quali versioni contengono questa correzione ..." –

+0

Il mio errore. In effetti, questo mi darebbe tutti i tag che mi servono. Molte grazie! – YMA

0

È possibile utilizzare Nearest extension per trovare il tag in avanti più vicino alla revisione. Quindi, a seconda del flusso di lavoro, dovresti essere in grado di dedurre facilmente quale altro tag contiene anche le tue modifiche.

È inoltre possibile utilizzare il seguente per stampare l'ultimo tag indietro rispetto alla versione attuale:

E poi anche dedurre il tag "copertura".

+1

{latesttag} mostra il tag * prima di * changeset, OP ** chiesto "all after" **. FAIL –

+0

@LazyBadger Sì, è quello che ho detto nella mia risposta ... Una volta che hai l'ultimo tag prima (o indietro per riutilizzare la mia parola), puoi dedurre gli altri. – krtek

+0

Buona idea, ma i tag non sono necessariamente lineari - il nostro grafico di changeset sembra più un arazzo che una scala :) – YMA

1

Questo dà l'output simile a hg tags:

hg log -r "reverse(descendants(8bb6)) and tag()" --template "{tags}\t{rev}:{node|short}\n" 
Problemi correlati