Módulos virtuales de CVS y asignación de directorys a repositorys de mercurial

Mi pregunta es similar a esta pero para Mercurial (convirtiendo usando cvs2hg ). Sin embargo, hay algunas diferencias. Esto es parte de nuestro file CVSROOT/modules y muestra el problema muy bien:

 PD1 -a PROD/PD1/Drivers Drivers/PD1/Firmware KernelHeaders Shanetworking IppLibs PD2 -a PROD/PD2/ Drivers/PD1 KernelHeaders Shanetworking IppLibs #PD2Linux Driver PD2Linux PROD/PD2/Drivers/Linux/BuildFiles &PD2LinuxSource PD2LinuxSource -d src &PD2 &PD2LibUSB PD2LibUSB -d ThirdParty/libusb libusb 

Como puede ver, la estructura del controller es complicada. Definitivamente estamos buscando racionalizar la estructura del controller, en lugar de include todo el controller anterior (PD1) en el más nuevo.

Según lo entiendo, en Mercurial puede usar la extensión de compartir para hacer la asignación de subdirectorys.

Mis preguntas son

  • ¿Hay alguna manera en Mercurial de llevar los files ubicados más abajo en el tree del directory (en este caso los files autoconf) hasta la raíz como se hace en la primera línea del controller PD2Linux?
  • ¿Hay alguna forma de crear directorys, según el indicador -d ?
  • ¿Cómo combinar los sets de cambios que abarcan PD1 y PD2?
    • por ejemplo, si se realizaron cambios en PD2 que abarcaron ambos controlleres y se registraron en PD en CVS. Esto es poco probable ya que CVS no tiene sets de cambios.
    • Me pregunto si el cvs2hg tiene en count el file de modules de CVS.
  • Si yo convirtiera cada directory PD individualmente (creando una raíz virtual en cada subdirectory), ¿sería mejor convertirlos todos juntos y luego dividirlos en repositorys independientes?

Usted escribe:

Según lo entiendo, en Mercurial puede usar la extensión de compartir para hacer la asignación de subdirectorys.

No exactamente. La extensión compartida permite asociar varias copys de trabajo con un solo repository; no se trata de reasignar (sub) directorys.

  • ¿Hay alguna manera en mercurial de llevar los files ubicados más abajo en el tree del directory (en este caso los files autoconf) hasta la raíz como se hace en la primera línea del controller PD2Linux?

La respuesta a esta y sus otras preguntas es: no. El problema principal es que Mercurial (y otras herramientas de control de versiones distribuidas) requieren que revise el repository completo cada vez. No puedes simplemente clonar repo/some/dir/ , siempre debes clonar repo/ .

  • Si yo convirtiera cada directory PD individualmente (creando una raíz virtual en cada subdirectory), ¿sería mejor convertirlos todos juntos y luego dividirlos en repositorys independientes?

El resultado final debería ser depósitos Mercurial separados, precisamente porque necesita clonar el repository completo. Así que asegúrese de hacer una asignación 1-1 entre los repositorys y sus controlleres.

Una herramienta que puede serle útil es la de los subrepositorys . Un subrepository es un repository nested que Mercurial realizará la compra al clonar el depósito externo. Vienen con varias advertencias , pero las grandes empresas las están usando hoy (he ayudado a varias compañías a configurar subrepos).