Probablemente sea posible, pero un poco complicado. Tendrías que escribir básicamente tu propia utilidad tag
(tal vez como una extensión de Mercurial) para ayudarte a reunir la información adicional necesaria y hacer llamadas adicionales al hg tag
. Sin embargo, no sé mucho sobre la API al escribir una extensión, por lo que cualquier idea que ofrezca se basará en llamar al hg
directamente con los comandos.
De forma predeterminada, cuando confirma en el repositorio principal, los subrepositorios se confirman primero. Luego toma el nuevo ID de conjunto de cambios para cada subrepo y los pone en el archivo .hgsubstate
en un formato como este:
77ba00000fe8e9ca033d97dc07b85a50dd106837 nested
El etiquetado recursiva tendría que obtener el contenido del archivo .hgsubstate
como lo fue en el conjunto de cambios que están etiquetando en el repositorio principal. Puede pensar en hg revert
, pero sería una mala idea, ya que podría estropear fácilmente su directorio de trabajo (hg
no le gusta hacerlo en .hgsubstate
de todos modos). Su mejor apuesta para eso es hacer hg export
para esa revisión y analizar el diff resultante para las líneas +
en el archivo .hgsubstate
.
A continuación, tomaría el id de changset y el nombre de subrepo de cada uno de ellos para llamar al hg -R <subrepopath> tag -r <id> <tag>
. Y, por supuesto, finalmente etiquetar el repositorio principal.
Todavía hay problemas potenciales con esto, cosas que deberá tener en cuenta o descubrir cómo vivir. Por ejemplo: ¿Qué sucede si se ha comprometido en el repositorio principal pero no en 1 o más subrepos? Ahora tiene más de un conjunto de cambios en el repositorio principal donde .hgsubstate
enumera el mismo id de conjunto de cambios en el subrepo. Entonces, si etiqueta ambos en el repositorio principal, el conjunto de cambios en el subrepo tendrá 2 etiquetas.
Estoy usando TortoisHg 2.0.5 w/Mercurial 1.8.4. Etiquetar subrepositorios por su cuenta no genera ninguna necesidad de comprometer en el repositorio principal, en su mayoría debería funcionar bien.