Control de versiones para múltiples proyectos que extienden un solo proyecto

Actualmente estoy trabajando con una colección de proyectos que son todas sus twigs / extensiones específicas de un proyecto central genérico y estoy buscando una forma de gestionar la forma en que los proyectos queueboran.

Entiendo que el siguiente es un poco vago, solo tengo un poco de experiencia con el control de versiones más allá de las necesidades básicas de un solo proyecto. Lo que estoy buscando es si alguien ha encontrado algo como esto antes y, de ser así, ¿cómo lo resolvieron? (es decir, ¿qué tecnologías / características se utilizaron o fue simplemente una cuestión de crear buenas prácticas?)

Estoy en la afortunada position de poder eliminar completamente SVN y pasar a otra cosa si es más apropiado.

Tenemos

  • Un tree fuente de subversión principal (el tree genérico) que recibe actualizaciones.
  • Una cantidad de treees de origen de subversión específicos del dominio que usarán los files de, modificarán los files existentes y agregarán nuevos files al tree de resources básicos para generar un producto final.

Nuestro process

  • Los cambios en el tree fuente central se incorporan manualmente en los treees específicos del dominio
  • Ocasionalmente, los cambios en los treees específicos del dominio se consideran "generics" / lo suficientemente buenos como para ser incorporados de nuevo en el tree central (y eventualmente en todos los demás treees específicos del dominio)

Lo que nos gustaría es una tecnología (o tecnologías) que pueda

  • Permitir que cada tree específico del dominio construya en function de una revisión específica en el tree central (es decir, el process de compilation tomaría la revisión central específica y luego aplicaría todos los cambios específicos del dominio sobre la parte superior para generar un producto final)
  • Permitiría que cada tree específico del dominio cambie la revisión específica del núcleo para build contra (Esto puede introducir errores de compilation, pero siempre que el process de cambio sea relativamente sencillo y fácil de usar).
  • Proporcione un método para que un tree específico del dominio contribuya con los cambios al repository central.
  • Como el tree central genérico es de código abierto, pero los treees específicos del dominio NO son, tendremos que tener algún tipo de control de acceso en algunas partes de la solución final.

Gracias de antemano por cualquier ayuda.

Los trataría como proyectos separados en su sistema de control de versiones.

Luego use un sistema de compilation como Ant para build los proyectos específicos del dominio. Haga que la secuencia de commands de compilation exporte una revisión o label particular del proyecto central y póngalo en un directory de su proyecto específico de dominio. (El directory debe ser excluido del control de versión).

O puede usar svn: externals, para que SVN compruebe automáticamente la versión de su proyecto principal cada vez que visita un proyecto específico de dominio.