2008-10-20 21 views
62

Estamos considerando pasar de SVN a Mercurial y hemos tropezado con un obstáculo.¿Puedo emular svn: externals usando mercurial?

Actualmente usamos svn:externals para extraer automáticamente un conjunto común de bibliotecas en el directorio de trabajo. No puedo encontrar apoyo para algo como esto en Mercurial.

¿Hay alguna manera de hacer esto automáticamente con Mercurial, o tengo que simularlo como parte de mi proceso de compilación?

+0

Esta pregunta la mejor extensión de hg podría ser útil. Le pregunté, bastante específicamente, para resolver este svn: problema externo. [¿Cuáles son las mejores y necesarias extensiones hg/mercurial?] (Http://stackoverflow.com/questions/1869040/what-are-the-best-and-must-have-hg-mercurial-extensions) –

Respuesta

20

No hay una buena manera de hacerlo solo con mercurial. La extensión forestal mencionada en otro lugar causa más problemas que en las soluciones actuales. La mayoría de la gente simplemente usa un repo grande e incluye todos sus componentes en el repositorio y luego hace que sus scripts de compilación descarguen y utilicen bibliotecas de terceros, utilizando maven si son cabezales de Java.

Respuesta corta "falsifíquelo en su proceso de compilación".

Actualización:

En Mercurial 1.3 se añadió una nueva característica sub repos. es como la antigua extensión forestal, pero comenzó como todo código nuevo.

Subrepos se consideran una característica de "de último recurso".

+0

Hola. No soy claro en "La mayoría de la gente solo usa un repositorio grande e incluye todos sus componentes en el repositorio". ¿Cómo funcionaría esto? Suponiendo que tiene project1 y project2 que ambos usan component1 y component2, ¿cómo 'checkout' project1 en un solo golpe usando Mercurial? –

+0

Ponga todo el proyecto1, el proyecto2, el componente1 y el componente2 en un solo repositorio y revíselos todos a la vez. Dicho esto, estoy editando mi respuesta para mostrar la nueva característica NestedRepositories en 1.3. –

+1

La función Repositorios anidados se ha mejorado aún más en 1.5 Creo que –

0

Pruebe Mercurial's Forest Extension.

+5

Cuidado de la extensión del bosque. No se ha actualizado y solo funciona con versiones anteriores de Mercurial. Ha caído en desgracia con la mayoría de los amigos de Mercurial, por lo que no veo que se lleve adelante en el futuro. –

3

¿Has probado Deps Extension?

No es parte de Mercurial, pero parece imitar svn:externals función

26

Parece que la funcionalidad de la extensión forestal está siendo implementado en el núcleo de Mercurial (a partir de 1.3):

https://www.mercurial-scm.org/wiki/Subrepository.

Actualmente marcado como "experimental", pero tal vez sea la ruta para manejar la funcionalidad svn: external-type a partir de v1.4.

Cuestiones relacionadas