2010-02-06 3 views
8

Me gustaría evaluar Mercurial para mis proyectos de trabajo. Pero la mayoría de mis proyectos dependen en gran medida de la presencia de svn: external-like support. He buscado en StackOverflow y busqué en Google el soporte correspondiente en Mercurial. Todo lo que encontré es la función subrepo agregada en Mercurial 1.3, pero the page for this feature dijo:¿Está lista para producción la función subprepos en Mercurial 1.4.x?

Los subrepos son una característica experimental de Mercurial 1.3. ¡Así que no hagas esto en repositorios de misión crítica!

No quiero usar algo inestable.

¿Alguien puede arrojar algo de luz sobre el estado real de esta característica, y los planes de pulido/acabado y cuándo se llamará "estable" y listo para repositorios de misión crítica?

+0

He actualizado la wiki para ser más claro sobre el estado, espero que ayude. –

Respuesta

6

La palabra en el canal de IRC#mercurial es que los subrepos seguirán funcionando como lo hacen, y el soporte crecerá. Por ejemplo, actualmente el comando 'hg status' no es subrepo aware, funciona, simplemente no se repite, pero en el futuro lo será. Sin embargo, los comportamientos actuales, los formatos de archivo (.hgsub y .hgsubstate) solo se modificarán de forma compatible con versiones anteriores.

Por lo tanto, continúe y confíe en ello ahora, y esperamos que mejore.

P.S. A partir de Mercurial 1.4.2, los subrepos ahora pueden ser repositorios de subversión, por lo que puede usar un padre mercurial y un svn kid.

+0

¿Entonces no hay una hoja de ruta clara para esta característica? Digamos que en hg 1.6 (o 1.7) debería estar casi completo, o algo similar. – bialix

+3

Es lo suficientemente completo como para usarlo ahora. Algunos flujos de trabajo serán un poco menos engorrosos en el futuro, pero ya está hecho. –

1

He tenido buena suerte con la función en mi (ligero) uso de la misma hasta el momento. Es útil en dos lugares:

  1. Copia de seguridad de un árbol de repositorios no relacionados con un solo comando hg pull.
  2. Atando un proyecto junto con versiones específicas de sus dependencias, de modo que un solo hg clone obtenga código fuente edificable. Esto está más cerca del uso típico de svn:externals.

Aquí hay un par de las limitaciones que he visto con ella hasta el momento:

  1. En el caso # 1 anterior, usted tiene que comprometerse todos subrepos a la vez. Esto solo ocasionalmente es molesto, ya que Mercurial (como cualquier DVCS) fomenta confirmaciones frecuentes —, por lo que la mayoría de los repositorios no se dejan sentados en un estado incompleto para empezar.
  2. Sólo los comandos Mercurial más básicos son conscientes subrepo-: clone, push/pull, update/commit, y tal vez un par de los demás.
  3. Los autores de extensiones necesitarán tiempo para probar sus extensiones frente a repositorios con subrepos.

Cuando el equipo de Mercurial describe la característica como "experimental", no significa que de repente va a decidir borrar todos sus datos. Solo quieren decir que no han codificado todos los casos extremos como conflictos de nombres (por ejemplo, un desarrollador agrega un subrepo llamado README, mientras que otro desarrollador agrega un archivo de texto llamado README).

+0

Mi caso de uso es # 2 en su primera lista. – bialix

Cuestiones relacionadas