Subrepositorios funcionan exactamente como usted desee.
Mercurial nunca actualiza automáticamente el subrepo a la propina. Siempre se queda en el conjunto de cambios que elija. Desde el documentation:
Subrepos no hacen un seguimiento de forma automática el último conjunto de cambios de sus fuentes . En cambio, se actualizan al conjunto de cambios que corresponde a con el conjunto de cambios desprotegido en el conjunto de cambios de nivel superior. Esto es para que los desarrolladores de siempre obtengan un conjunto consistente de bibliotecas compatibles de código y cuando se actualicen.
Para lograr lo que desea, puede seguir los siguientes pasos:
echo subrepo = https://example.com/subrepo/repo/path > .hgsub
hg add .hgsub
hg clone https://example.com/subrepo/repo/path subrepo
hg -R subrepo update mytag
hg commit
Esto creará un directorio de subrepo con el contenido del repositorio especificado que permanecerá en la etiqueta mytag
siempre y cuando no actualice manualmente a otra cosa.
Todos los que clonen su repositorio tendrán el subrepo en el mismo conjunto de cambios que usted (es decir, mytag
).
FYI, el conjunto de cambios al que se actualiza un subrepo se almacena en el archivo .hgsubstate
en la raíz del repositorio principal.