Pregunta

He estado tratando de seguir las instrucciones en la respuesta a esta pregunta, usando el horno.

Me gustaría poder organizar las cosas de la siguiente manera:

  • /somepath/thirdparty mapas en un repositorio de horno "tercero" y contiene un código variado
  • /somepath/common mapas a un repositorio de horno "común" y contiene código compartido que he escrito

y

  • /somepath/project1 Mapas del repositorio del horno "Proyecto1"
  • /somepath/project1/thirdparty mapas en rama de tercera parte de arriba
  • /somepath/project1/common mapas a la rama de lo común arriba

y

  • /somepath/project2 Mapas del repositorio del horno "Proyecto1"
  • /somepath/project2/thirdparty mapas a otra rama de tercera parte de arriba
  • /somepath/project2/common mapas a otra rama de común arriba

Encontré que cuando creé el .hgsub Archivo según las instrucciones y agregadas/lo empujó al horno, ya no podía ver los archivos del horno en el visor de archivos web del horno; mostraba un mensaje oscuro sobre el horno "sobrecalentamiento" :-) Además, mientras creía automáticamente las subcolidatos en El lugar correcto, no estaban poblados con archivos (posiblemente porque el extracción falló).

¿Alguien intentó algo como esto antes, usando Kiln?

Como tengo la intención de desarrollar una serie de aplicaciones que usen el código común (y potencialmente eventualmente lanzar la biblioteca como código abierto), me gustaría que se administre en repositorios discretos. Sin embargo, como algunos de los proyectos son para clientes finales, necesito poder darles un solo repositorio que incluya cosas como se describió anteriormente.

¿Fue útil?

Solución

El horno lo hace Actualmente no admite SubrePos que usan URL anidadas en el servidor. Esto significa que no puede hacer que las siguientes URL funcionen:

http://server/kiln/somepath/project1
http://server/kiln/somepath/project1/thirdparty

Entonces debes configurar el horno para que tengas cuatro Repositorios en el servidor:

http://server/kiln/somepath/project1
http://server/kiln/somepath/project2
http://server/kiln/somepath/thirdparty
http://server/kiln/somepath/common

Eso es fácil, solo cuatro repositorios normales. Luego clon "proyecto" y cree el .hgsub Archivo con:

thirdparty = http://server/kiln/somepath/thirdparty
common = http://server/kiln/somepath/common

Cuando lo empuje de regreso al horno, notará y mostrará enlaces para los subrepositorios. Sin embargo, los subrePositorios no Termine siendo anidados en el servidor. Así que no habrá ninguno project1/thirdparty ruta en el servidor.

También está lejos de ser claro que querrías eso. Cuando tiene varios proyectos que colaboran y usan una base de código común, desea que "Project1" y "Project2" obtengan los cambios de los demás en esta base de código común. Entonces es muy útil que el common Subrepo en ambos proyectos empuje y extrae de http://server/kiln/somepath/common.

En mercurial, nosotros Normalmente recomiendo que usas rutas del formulario common = common en el .hgsub expediente. Esto significa que el servidor debe admitir repositorios anidados. Cuando el horno no es compatible con los reposques anidados, puede usar rutas completas.

Cuando inicialmente configure los subrepositorios, recuerde que necesita actualizarlos manualmente. Entonces, con las URL anteriores, configuraría "Project1" ejecutando:

$ hg clone http://server/kiln/somepath/project1
$ echo "common =     http://server/kiln/somepath/common" > .hgsub
$ echo "thirdparty = http://server/kiln/somepath/thirdparty" > .hgsub
$ hg commit -m "Created subrepos"

Esto crea subrepositorios vacíos iniciales. Están vacíos porque no le has dicho a Mercurial qué cambios de cambios necesitas en ellos. Esto se rastrea en .hgsubstate donde encontrarás:

0000000000000000000000000000000000000000 common
0000000000000000000000000000000000000000 thirdparty

Para poblar los subrepositorios que haces

$ cd common
$ hg pull --update
$ cd ../thirdparty
$ hg pull --update
$ cd ..
$ hg commit -m "Updated subrepos"

Esto actualiza el 000... colocar .hgsubstate con los ID de la punta de la punta actual IDS para los dos subrepos. Los clones futuros de "Project1" notarán el .hgsubstate Archivo y asegúrese de actualizar los subrePos a la revisión mencionada allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top