2011-12-17 10 views
7

Tengo curiosidad si esto es posible con Mercurial. Me gustaría tener un subrepos en un proyecto que siempre esté fijado al conjunto de cambios especificado manualmente o, mejor aún, a la etiqueta.¿Cómo hacer que el subrepositorio de Mercurial apunte siempre a un determinado conjunto de cambios o etiqueta?

Básicamente lo que estoy tratando de lograr es tener un sistema central en el repositorio principal y luego todos los módulos y componentes en subrepos, pero no quiero que esos subrepos apunten a punta, solo a las principales versiones de esos componentes/módulos (por lo tanto, etiquetas).

Respuesta

3

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:

  1. echo subrepo = https://example.com/subrepo/repo/path > .hgsub
  2. hg add .hgsub
  3. hg clone https://example.com/subrepo/repo/path subrepo
  4. hg -R subrepo update mytag
  5. 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.

Cuestiones relacionadas