Managing common components with Fossil CVS
- by Larry Lustig
I'm a Fossil (and CVS configuration novice) attempting to create and manage a set of distributed Fossil repositories for a Delphi project.
I have the following directory tree:
 Projects
     Some Project
     Delphi Components
        LookupListView
     Some Client
        Some Project For Client
        Some Other Project For Client
           Source Code
               Project Resources
               Project Database
I am setting up Fossil version control in order to version and share Projects\Some Client\Some Other Project For Client\Source Code, which contains Delphi 2010 source for a database project.
This project makes use of Projects\Delphi Components\LookupListView which is a Delphi component.  I need this code to be included in the versioning system for my project.  I will, in theory, need to include it in other Fossil repositories in the future, as well.
If I create my Fossil repository at the Source Code or Some Other Project For Client level, I cannot add any code above that level to my repository.  What is the proper way to deal with this?  The two solutions that occur to me are
1) Creating a separate repository for LookupListView and make sure that everyone who uses a repository for a project that references it "knows" that they must also get the current version of this project as well.  This seems to defeat the purpose of being able to obtain a complete, current version of the project with a single checkout.  The problem is magnified because there are other common component dependencies in this project.  
2) Establishing my Fossil repository in the Projects directory, so I can check in files from various subfolders.  This seems to me to involve an awful lot of extra path-typing when doing adds, and also to impose my directory structure (Some Client\Some Other Project For Client\Source) on the other users of the repository -- in this case, the actual client.
Any suggestions appreciated.