In Mercurial, come vedere i tag solo per una serie di revisioni al posto di tutti?
-
12-10-2019 - |
Domanda
hg tags
mostra sempre tutti i tag, così come posso ottenere solo i tag che puntano a una specifica revisione e di tutti i suoi antenati?
Il caso d'uso nel mondo reale è che se uso i tag locali per designare caratteristiche (o correzioni di bug) sui gruppi di modifiche, e ho bisogno di scoprire le caratteristiche cumulativi / bug fino ad una specifica rev.
Una soluzione potrebbe essere l'aggiunta di un comando wrapper che aggiunge "-r" per tags
. Allora qual è il modo migliore per la sua attuazione? Utilizzare revsets per ottenere tutti i regimi ancestrali e filtrare i tag?
Soluzione
Questo dovrebbe fare il trucco (richiede mercuriale 1.7):
hg log -r "ancestors(<rev>) and tag()"
dove <rev>
è il hash o numero di revisione locale. Tuttavia, codifica ogni bugfix e caratteristica sembra eccessivo.
Invece di tagging, è sufficiente seguire una convenzione in cui si mette "bugfix: xyz" o "caratteristica: abc" nei messaggi di commit. È quindi possibile estrarre tutte le correzioni e le caratteristiche in questo modo:
hg log -r "ancestors(<rev>) and (keyword(bugfix) or keyword(feature))"
Tenere i tag per traguardi importanti o altre revisioni che hanno qualche significato speciale.
Altri suggerimenti
Se ho capito bene, si desidera:
- Specifica una revisione
- filtrare il registro per solo quel changeset + tutti i suoi antenati
- Estrai tutti i tag che si trovano in quei gruppi di modifiche
Si può fare che se si può limitare a nomi dei tag:
hg log -r "ancestors(HASH)" --template "{tags}"