2009-12-23 8 views
5

En nuestra compañía, estamos trabajando en un producto compuesto por diferentes módulos C/C++. Idealmente, cada nivel y módulo debería desarrollarse por separado por diferentes equipos y evaluarse de forma independiente. Actualmente, tenemos por separado cada módulo en su propia rama: \svn: externals & tagging, cómo combinar código entre equipos

Los módulos son:

 
\hid 
    \branches 
    \tags 
    \trunk 
\api 
    \branches 
    \tags 
    \trunk 
\ui 
    \branches 
    \tags 
    \trunk 

Por otra parte, la versión del producto está construido mediante la combinación de los módulos y compilado con regularidad utilizando un sistema de CI.

 
\productX 
    \branches 
    \5.0 
     \hid-4.0 (svn:externs \hid\branches\4.0) 
     \api-3.0 (svn:externs \api\branches\3.0) 
     \ui-5.0 (svn:externs \ui\branches\5.0) 
    \tags 
    \trunk 

El principal problema que estamos teniendo es el comportamiento de 'svn tag' en asociación con externos. Los externos actuales hacen referencia a HEAD, porque nos gustaría construir la última versión regularmente para asegurar que todos los módulos funcionen juntos. Sin embargo, una vez que una construcción es exitosa y procedemos a hacer una publicación, sería bueno si hubiera una forma fácil de etiquetar automáticamente todo, incluida la versión utilizada en el exterior. Tal como está hoy, tenemos que crear etiquetas para los módulos y luego actualizar los externos a estas etiquetas, luego etiquetar el producto y, finalmente, volver a cambiarlo al tronco después.

¿Hay alguna manera más clara de hacerlo? Siéntase libre de comentar también sobre la estructura actual.

Respuesta

3

Creo que sería mejor tener sus definiciones externas referirse a las etiquetas de los módulos, en lugar de sus troncales. De esta manera, usted ’ solo está obteniendo los hitos conocidos de los módulos, y nada tendrá que cambiar cuando etiquete el producto principal.

Esto está de acuerdo con las mejores prácticas (sugeridas en la documentación de SVN) de solo utilizar revisiones explícitas (en lugar de HEAD) en svn:externals.

+1

Gracias Michael. Sus comentarios reflejan lo que he leído (¡mucho!) Sobre SVN svn: prácticas externas. Estamos haciendo principalmente lo que se ha sugerido: * la mayoría de las veces, el producto se refiere a las ramas de los módulos * antes de una versión, creamos una etiqueta para cada módulo * siguiente, actualizamos las externas para señalarlas etiquetas * finalmente, etiquetamos el producto * y luego cambiamos los externos a las ramas otra vez Esto funciona, pero es muy tedioso y propenso a errores. Esperaba que hubiera una mejor manera ... – Charles

Cuestiones relacionadas