En mercurial, la forma de ver las etiquetas de sólo un conjunto de revisiones en lugar de todos?
-
12-10-2019 - |
Pregunta
hg tags
siempre muestra todas las etiquetas, así que ¿cómo puedo obtener sólo las etiquetas que apuntan a una revisión específica y todos sus antepasados?
El caso de uso en el mundo real es que si uso las etiquetas locales para designar características (o correcciones de errores) en conjuntos de cambios, y necesito averiguar las características acumulativas / bichos arriba hasta un rev específica.
Una solución sería añadir un comando de contenedor que añade "r" a tags
. Entonces ¿cuál es la mejor manera de ponerla en práctica? Use revsets para obtener todas las revoluciones ancestrales y filtrar las etiquetas?
Solución
Esto debería hacer el truco (requiere mercurial 1.7):
hg log -r "ancestors(<rev>) and tag()"
donde <rev>
es el hash o número de revisión local. Sin embargo, el etiquetado de cada corrección de errores y la función parece un exceso.
En lugar de etiquetado, sólo puede seguir una convención donde pones "corrección de errores: xyz" o "característica: abc" en sus mensajes cometer. A continuación, puede extraer todas las correcciones y características de esta manera:
hg log -r "ancestors(<rev>) and (keyword(bugfix) or keyword(feature))"
Mantenga las etiquetas de los hitos importantes u otras revisiones que tienen un significado especial.
Otros consejos
Si he entendido bien, se desea:
- Especifica una revisión
- filtrar el registro con sólo el conjunto de cambios + todos sus antepasados ??
- Extraer todas las etiquetas que se encuentran en esos conjuntos de cambios
Se puede hacer eso si puede limitarse a los nombres de etiquetas:
hg log -r "ancestors(HASH)" --template "{tags}"