Pregunta

Tengo un par de proyectos ANT para varios clientes diferentes; La estructura de directorios que tengo para mis proyectos es similar al siguiente:

L___standard_workspace
    L___.hg
    L___validation_commons-sub-proj  <- JS Library/Module
    |   L___java
    |   |   L___jar
    |   L___old_stuff
    |   L___src
    |   |   L___css
    |   |   L___js
    |   |       L___validation_commons
    |   L___src-test
    |       L___js
    L___v_file_attachment-sub-proj  <- JS Library/Module
    |   L___java
    |   |   L___jar
    |   L___src
    |   |   L___css
    |   |   L___js
    |   L___src-test
    |       L___js
    L___z_business_logic-sub-proj  <- JS Library/Module
    |   L___java
    |   |   L___jar
    |   L___src
    |       L___css
    |       L___js
    L____master-proj               <- Master web-deployment module where js libraries are compiled to.
        L___docs
        L___java
        |   L___jar
        |   L___src
        |       L___AntTasks
        |           L___build
        |           |   L___classes
        |           |       L___com
        |           |           L___company
        |           L___dist
        |           L___nbproject
        |           |   L___private
        |           L___src
        |               L___com
        |                   L___company
        L___remoteConfig
        L___src
        |   L___css
        |   |   L___blueprint
        |   |   |   L___plugins
        |   |   |   |   L___buttons
        |   |   |   |   |   L___icons
        |   |   |   |   L___fancy-type
        |   |   |   |   L___link-icons
        |   |   |   |   |   L___icons
        |   |   |   |   L___rtl
        |   |   |   L___src
        |   |   L___jsmvc
        |   L___img
        |   |   L___background-shadows
        |   |   L___banners
        |   |   L___menu
        |   L___js
        |   |   L___approve
        |   |   L___cart
        |   |   L___confirm
        |   |   L___history
        |   |   L___jsmvc
        |   |   L___mixed
        |   |   L___office
        |   L___stylesheets
        |   L___swf
        L___src-standard

Dentro de la copia de trabajo los módulos de compilar el sub-proyecto en un único archivo JavaScript que se coloca en el directorio Javascript del proyecto principal.

Por ejemplo , los directorios:

  • validation_commons-sub-proj
  • v_file_attachment-sub-proj
  • z_business_logic-sub-proj

... todo se combinan y minified (una especie de compilado) en un nombre de archivo Javascript diferente en el directorio _master-proj/js; y en el paso final se compila para ser desplegado en el servidor la _master-proj.

Ahora, en lo que respecta a la forma en que me gustaría configurar esto con Hg, lo que le gustaría ser capaz de hacer es clonar el proyecto principal y sus sub-proyectos de sus propios repositorios de línea de base en un cliente de de trabajo de copia, por lo que los módulos se pueden añadir (utilizando Hg) para la copia de trabajo de un cliente particular.

Sin embargo Adicionalmente, cuando lo haga hacer algunos cambios en / arreglar errores copia de trabajo de un cliente, me gustaría ser capaz de empujar opcionalmente los cambios / correcciones de errores de vuelta al repositorio de la línea de base del proyecto principal / sub-proyecto, a los efectos de los cambios con el tiempo tirando / correcciones en las copias de trabajo de otros clientes que puedan contener los mismos errores que deben ser corregidos.

De esta manera voy a ser capaz de utilizar las mismas correcciones de errores a través de diferentes clientes.

Sin embargo ... no estoy seguro de la mejor manera de hacer esto usando hg y Eclipse.

lee aquí que se puede utilizar de Convertir Extensión para dividir un subdirectorio en un proyecto separado usando la opción --filemap.

Sin embargo, todavía estoy un poco confundido en cuanto a si sería mejor utilizar el Convert extensión o si sería mejor simplemente albergar cada uno de los módulos en su propio repositorio y comprobar a cabo en un único espacio de trabajo para cada cliente.

¿Fue útil?

Solución

Sí, parece que subrepos está lo que buscas para, pero creo que tal vez esa es la respuesta correcta a la pregunta equivocada y yo fuertemente sospechoso que se encontrará con similares que se producen cuando se utiliza svn: externals

En lugar de eso recomendaría que "publicar" sus archivos JS combinados y minified a un artefacto repositorio y utilizar un gestor de dependencia como Ivy para tirar de versiones específicas de sus artefactos en su proyecto principal. Este enfoque le dará un mayor control sobre las versiones de los subproyectos sus usos proyecto principal.

Si es necesario hacer correcciones de errores a un sub-proyecto para un cliente en particular, puede simplemente hacer las correcciones en la línea principal para ese sub-proyecto, publicar una nueva versión (a ser posible a través de un automatizado oleoducto acumulación ) y actualizar su proyecto principal a utilizar la nueva versión. Oh, que quería probar la nueva versión con el maestro de su proyecto antes de publicar? En ese caso, antes de empujar su revisión, combinar y minify su sub-proyecto a nivel local, publicarla en un repositorio local y tiene proyecto principal del cliente recoger esa versión para su prueba.

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