Administrar componentes comunes con Fossil CVS

Soy un novato Fossil (y configuration CVS) que intenta crear y administrar un set de repositorys Fossil distribuidos para un proyecto Delphi.

Tengo el siguiente tree de directorys en mi máquina de desarrollo:

Projects Some Project Delphi Components LookupListView Some Client Some Project For Client Some Other Project For Client Source Code Project Resources Project Database 

Estoy configurando el control de versión Fossil para versionar y compartir Proyectos \ Algún Cliente \ Algún Otro Proyecto para Código Cliente / Fuente, que contiene fuente Delphi 2010 para un proyecto de database.

Este proyecto hace uso de Projects \ Delphi Components \ LookupListView que es un componente Delphi. Necesito que este código se incluya en el sistema de versiones para mi proyecto. En teoría, tendré que includelo en otros repositorys Fossil en el futuro.

Si creo mi repository Fossil en el código fuente o en algún otro proyecto para el nivel del cliente, no puedo agregar ningún código por encima de ese nivel a mi repository. ¿Cuál es la forma correcta de lidiar con esto? Las dos soluciones que se me ocurren son

1) Crear un repository separado para LookupListView y asegurarse de que todos los que usan un repository para un proyecto que lo hace reference "saben" que también deben get la versión actual de este proyecto. Esto parece frustrar el propósito de poder get una versión completa y actual del proyecto con un único pago. El problema se magnifica porque hay otras dependencies de componentes comunes en este proyecto.

2) Establecer mi repository Fossil en el directory de Proyectos, para que pueda verificar los files de varias subcarpetas. Esto me parece implicar una gran cantidad de tipa de ruta adicional cuando hago adiciones, y también para imponer mi estructura de directory (Algún Cliente \ Algún Otro Proyecto para Cliente \ Fuente) en los otros usuarios del repository – en este caso, el cliente real

Cualquier sugerencia apreciada.

Yo uso Git, pero mi enfoque puede aplicarse en su situación.

Tengo un repository para toda la carpeta de mis componentes. Esto me da la capacidad de get todos ellos con solo unos pocos commands de console (en caso de que reinstale mi sistema operativo o vaya a otra computadora, etc.).

También tengo un repository por cada uno de mis proyectos. Si algún proyecto utiliza controles de terceros, creo la subcarpeta "componentes" y hago enlaces simbólicos ( uniones ) de cada set de componentes.

Este enfoque tiene algunas desventajas (cuando "retrocedes" en el historial de confirmaciones de algún proyecto, también se pueden modificar los componentes. Y si muchos proyectos usan los mismos componentes, esto podría causar algunos problemas). Pero no tuve problemas todavía 🙂