Las preguntas frecuentes y hginit.com han sido realmente útiles para ayudarme a hacer la transición de svn a hg.Hacer superpositorios mercuriales comportarse como subversión externos
Sin embargo, cuando se trata de utilizar la función de subrepositorio de Hg a la manera de los elementos externos de subversión, he intentado con todo y no puedo reproducir el buen comportamiento de svn externals.
Aquí está el ejemplo más sencillo de lo que quiero hacer:
Init "lib" repositorio Este repositorio es no volver a ser utilizado como un independiente; siempre está incluido en los repositorios principales , como un sub-repositorio.
Init incluyendo uno o más repositorios para mantener el ejemplo sencillo, voy a "init" un repositorio llamado "principal"
tiene "principal" incluyen "lib" como subrepository
Importante: Y AQUÍ HAY LO QUE NO PUEDO OBTENER PARA TRABAJAR: Cuando modifico un archivo dentro de "main/lib", y presiono la modificación, , entonces ese cambio se envía al repositorio "lib" - NO a una copia dentro de "main".
Las líneas de comando hablan más que las palabras. He intentado muchas variaciones sobre este tema, pero esta es la esencia. Si alguien puede responder, en líneas de comando, ¡estaré eternamente agradecido!
1. Init "lib" del repositorio
$ cd/home/moi/## hgrepos Dónde estoy almacenar mis repositorios de Hg, en mi servidor principal
$ hg init lib
$ echo "foo"> lib/lib.txt
$ hg add lib
$ hg ci -a -m "Init lib" lib
2. Init repositorio "principal", e incluyen "lib" como subrepos
$ cd/home/moi/hgrepos
$ hg init principales
$ echo "foo"> principal/main.txt
$ hg agregar
$ cd principal
$ clon principal hg ../lib lib
$ echo "lib = lib"> .hgsub
$ hg ci -A -m "Init main".
Todo funciona bien, pero cuando hago un clon del repositorio "principal" y realizo modificaciones locales a los archivos en "main/lib", y los presiono, los cambios se colocan en "main/lib" , NO a "lib".
EN LÍNEA DE COMANDO-ESE, este es el problema:
$/home/moi/hg-test
$ hg clone ssh: //[email protected]/hgrepos/ lib lib
$ hg clone ssh: //[email protected]/hgrepos/main principal
$ cd principales
$ echo foo >> lib/lib.txt
$ hg st
M lib.txt
$ hg com -m "lib.txt Modificado, desde el interior de las principales repos" lib.txt
$ hg empuje
empujando a ssh: //[email protected]/hgrepos/main/lib
La última línea de salida de hg muestra el problema.
Muestra que he hecho una modificación a una COPIA de un archivo en lib, NO a un archivo en el repositorio lib. Si esto funcionara como me gustaría, el impulso sería para hgrepos/lib, NO para hgrepos/main/lib. Es decir, me gustaría ver:
$ hg empuje
empujando a ssh: //[email protected]/hgrepos/lib
si puede responder a esto en términos
DE LÍNEAS DE COMANDO EN LUGAR DE EN INGLÉS,
¡SERÉ ETERNAMENTE AGRADECIDO!
¡Gracias de antemano!
Emily en Portland
Emily, me alegro de que trabajó. ¿Qué tal si selecciono mi respuesta? Esa es la recompensa habitual por el tiempo dedicado a ayudar aquí en SO. Sus revisiones de la respuesta generalmente van a un comentario sobre el mío o a una edición de 'Actualización' de su pregunta, no a una respuesta en sí misma. –
Y en realidad, al ver las instrucciones de ssh: //, lo está pensando demasiado. Después de seguir mis pasos para configurar una configuración de subrepo local, puede clonar el repositorio 'principal' sobre ssh y mercurial creará toda la configuración main/lib en el repositorio remoto haciendo ambos pulls. Esa es la verdadera promesa de los subrepos: un solo clon le proporciona múltiples repositorios anidados. –