2011-09-01 11 views
5

He leído todas las preguntas sobre los subrepositorios Mercurial que pude y aún no estoy seguro de cómo funciona. Estamos utilizando hgweb.cgi en IIS, por lo que tenemos rutas http: // para todos nuestros repositorios.¿Flujo de trabajo para mantener los supertipociales Mercurial actualizados cuando los cambios se realizan en clones?

Aquí está el diseño básico:

/Libraries - http://server/Libraries 
/Project1 - http://server/Project1 
/Project1/LibrariesSubrepo - http://server/Project1/LibrariesSubrepo (clone of libraries) 
/Project2 - http://server/Project1 
/Project2/LibrariesSubrepo - http://server/Project2/LibrariesSubrepo (clone of libraries) 

En los archivos .hgsub, tengo la configuración de la ruta como:

LibrariesSubrepo = LibrariesSubrepo 

Si quiero trabajar en los proyectos, les clonar el servidor de mi estación de trabajo, así que tengo un clon de Project1 y Project2 y también extrae automáticamente los subrepos.

En project1 en mi estación de trabajo local, realizo algunos cambios a los archivos en/Project1/LibrariesSubrepo. ¿Cómo me aseguro de que esos cambios vuelvan al repositorio de origen de las bibliotecas en el servidor? ¿Tengo que enviar manualmente los cambios desde el subrepo al repositorio de origen del subrepo?

Me gustaría poder hacer cambios en el repositorio Project1 localmente, luego confirmar/presionar esos cambios, luego en Project2, debería ser capaz de extraer los cambios del servidor que debería actualizar el Project2/LibrariesSubrepo al ultima versión.

Respuesta

4

Definitivamente, usted puede empujar manualmente desde su LibrariesSubrepo en Project1 a la Libraries repositorio en el servidor y luego tirar de forma manual desde Libraries en LibrariesSubrepo en un clon Project2.

Sin embargo, también se puede vincular el subrepos en el servidor:

  1. El share extension le permite crear dos o más depósitos que comparten una carpeta .hg. Haga esto en el servidor para que las tres instancias del subrepo en el servidor compartan las carpetas .hg.

  2. Enlaza las carpetas .hg - más oldschol y solo funciona si estás en un servidor donde puedes crear enlaces simbólicos (servidores Unix o Windows Vista y más adelante con el privilegio adecuado).

  3. Mantenga solo un subrepo en el servidor pero exhíbalo tres veces en la configuración hgweb. De esta manera:

    [paths] 
    Project1     = /repos/Project1 
    Project1/LibrariesSubrepo = /repos/Libraries 
    Project2     = /repos/Project2 
    Project2/LibrariesSubrepo = /repos/Libraries 
    

En todos los casos, en realidad hay sólo tres repositorios en el servidor: Project1, Project2 y Libraries.

+0

Gracias por su respuesta ... buena información! – jpshook

+0

Una pregunta adicional: cuando se trabaja con Subrepos, ¿se supone que usted debe comprometerse normalmente en el subrepo primero, luego en el repositorio padre o simplemente comprometer en el padre? – jpshook

+1

Haga preguntas no relacionadas como nuevas preguntas y pregúnteles en la lista de correo de Mercurial. Ese es un foro mejor para la discusión. –

Cuestiones relacionadas