Si Biblioteca B y C deben ser subdirectorios del Proyecto A lo puedo hacer si quiero iniciar un proyecto D que utiliza Biblioteca B, pero no es lo contrario afiliado con el proyecto A en absoluto?
Cualquier proyecto puede existir tanto en forma independiente y como subrepository de otro proyecto al mismo tiempo. Explicaré sugiriendo un flujo de trabajo.
En primer lugar, cada uno de sus proyectos (A, B, C) debe tener un repositorio bendita que se publica en alguna parte:

Usted podría funcionar hgwebdir en su propio servidor, o hacer uso de un servicio de alojamiento Mercurial como Bitbucket o Kiln. De esta manera, los desarrolladores tienen un punto central de autorización para hacer/alejar los cambios, y usted tiene algo para hacer copias de seguridad.
Ahora usted puede hacer clones de estos repositorios para trabajar en dos modos diferentes:
clonar directamente su proyecto. Por ejemplo:
hg clone http://bitbucket.org/LachlanG/LibraryB C:\Lib\LibraryB
y/o crear definiciones subrepository poniendo un archivo .hgsub
en la raíz de ProjectA
con el siguiente contenido:
libraries/libraryB = http://bitbucket.org/LachlanG/LibraryB
libraries/libraryC = http://bitbucket.org/LachlanG/LibraryC
Estas definiciones subrepository indicarle a Mercurial que cada vez que se clona el Proyecto A, también debe colocar los clones de la Biblioteca B y la Biblioteca C en la carpeta libraries
.
Si está trabajando en el Proyecto A y confirma, sus cambios en libraries/LibraryB
y libraries/LibraryC
se cometerán también. Mercurial registrará qué versión de las bibliotecas está utilizando el Proyecto A en el archivo .hgsubstate
. El resultado es que si hg update
a una versión anterior del proyecto para ver cómo funcionó la semana pasada, también obtendrá la versión correspondiente de sus bibliotecas. Ni siquiera necesita crear etiquetas :-)
Cuando hg push
el Proyecto A cambia al depósito bendecido, Mercurial también se asegurará de hacer que los cambios en el subrepositorio primero sean de su propio origen. De esta forma, nunca publica accidentalmente cambios de proyecto que dependen de cambios de biblioteca no publicados.
Si prefiere mantener todo local, puede seguir utilizando este flujo de trabajo utilizando rutas de acceso relativas en lugar de URL en las definiciones del subrepositorio.
Dónde está la carpeta de bibliotecas que menciona al final de la oración, "Estas definiciones de subrepositorio indican a mercurial que cada vez que se clona projectA, también debe colocar clones de LibraryB y LibraryC en la carpeta de bibliotecas." – LachlanG
Es solo una carpeta, la parte izquierda de: libraries/libraryB = http://bitbucket.org/LachlanG/LibraryB es donde el clon del lado derecho debería ser –
@LachlanG: aparecerá en la raíz del ProyectoA clonar, por ejemplo 'C: \ Dev \ ProjectA \ libraries \'. –