2015-09-17 14 views
5

È possibile elencare i tag solo su un determinato ramo? (Da linea di comando preferibilmente)Come elencare tutti i tag in un determinato ramo Mercurial?

Ad esempio:

$ hg branch test1 
... (make some commits) 
$ hg tag mytag_on_test1_branch 

$ hg branch test2 
... (make some commits) 
$ hg tag mytag_on_test2_branch 
... (make some commits) 
$ hg tag mytag_on_test2_branch_2 

Ora hg tags rendimenti:

$ hg tags 
tip        5:34603c3a4107 
mytag_on_test2_branch_2   4:72db17d2170c 
mytag_on_test2_branch    2:09aed50d8b95 
mytag_on_test1_branch    0:d43c48c0e1d8 

vorrei solo per vedere i tag sul ramo "test2", in questo modo:

mytag_on_test2_branch_2   4:72db17d2170c 
mytag_on_test2_branch    2:09aed50d8b95 

È possibile?

risposta

7

Come spesso accade, la risposta sta nell'uso corretto delle revsets; sono uno strumento potente per limitare gli intervalli di revisione a quasi qualsiasi necessità. Vedi hg help revsets per i dettagli.

Nel tuo caso utilizziamo anche il modello di output per visualizzare solo i tag anziché l'output di registro completo di tali revisioni. Così se avete bisogno di tutti i tag per THISBRANCH:

hg log --rev="branch(THISBRANCH) and tag()" --template="{tags}\n" 

L'output per pronti contro termine ampiamente-tagged

hgsubversion>hg log -r "branch(stable) and tag()" -T "{tags}\n" 
1.5.1 
1.6.1 
1.6.2 
1.6.3 
1.7 
1.8 
1.8.1 
1.8.2 
+0

Grazie! Tuttavia, questa soluzione sembra emettere solo il primo tag in un ramo, non tutti. Qualche idea su come sistemarlo? – johndodo

+0

Elenca tutti i tag che appartengono a quel ramo esatto. Esclude i tag che sono antenati ma non nello stesso ramo di THISBRANCH (ad esempio nei rami che THISBRANCH era ramificato) – planetmaker

+0

Ho aggiornato l'esempio - quando eseguo 'hg log --rev =" branch (test2) e tag() "--template =" {tag} \ n "' Ricevo solo un risultato ('mytag_on_test2_branch'), manca l'altro (' mytag_on_test2_branch_2'). – johndodo

Problemi correlati