¿Puedo anidar subrepos en Mercurial?

Tengo problemas para configurar un proyecto en Mercurial con subrepos.

Gol:

Quiero configurar la estructura de esta manera:

-- Build_Repo (this repo will be used to track dependencies) -- Subrepo_A (this is the main source) -- Modules (Part of Subrepo_A) -- Subrepo_B 

Entonces hay tres repos: Build, A y B. B está nested dentro de A, A está nested dentro del repository de compilation raíz. El repository de compilation se usará para rastrear las dependencies, el subrepo A se usará para rastrear los principales files fuente, y el subrepo B (y otros) se usarán para rastrear el desarrollo del module / complemento.

Problema / Pregunta

No tengo problemas para configurar el repository de compilation inicial y el Subrepo_A nested simplemente agregando la ruta de Subrepo_A y el origen al file .hgsub y comprometiéndolo con el repository de compilation. Sin embargo, cuando después de agregar la ruta / fuente de subrepo_B al file .hgsub del repository de compilation, y luego bash confirmar, aparece el post de error:

abortar: ruta 'Subrepo_A / Módulos / Sebrepo_B' está dentro del repository nested 'Subrepo_A'

A Mercurial no parece gustarle un repository nested dentro de un repository ya nested. ¿Es esto cierto o me estoy perdiendo algo? ¿Alguna mejor idea sobre cómo administrar comstackciones / dependencies?

El problema aquí es una de las limitaciones ineludibles de Mercurial: un repository corresponde a un tree de carpetas en su computadora. El repository es responsable de todo bajo ese tree de carpetas.

Cuando su repository de nivel superior incluye un sub-repository, entrega al sub-repo el control completo de esa parte de su estructura de carpetas. Entonces, el nivel superior no puede especificar otro sub repository en alguna parte de las primeras carpetas sub-repos.

Solución 1

Subrepo_B es en realidad una dependencia de Subrepo_A. En ese caso, haga que sus repositorys reflejen la verdadera dependencia editando el file .hgsub de Subrepo_A para agregar Subrepo_B en Módulos / Sebrepo_B. Esto funciona porque Subrepo_A conserva el control sobre sus carpetas.

Solución 2

Subrepo_A no depende de Subrepo_B, lo estabas poniendo allí por conveniencia. En este caso, debe hacer que tanto Subrepo_A como Subrepo_B sean subrepos (en diferentes ubicaciones) de Build_Repo.

En su situación, deberá agregar subrepoB a subrepoA.

Sugeriría intentar mover dependencies para que tu tree solo tenga 2 niveles, pero eso puede no ser posible. Por lo general, no es una experiencia muy suave.

Intereting Posts