[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

One repository, multiple products?

From: Dennis Jones
Subject: One repository, multiple products?
Date: Fri, 19 Jan 2007 21:18:14 GMT


I am in a bit of a quandary.  I use CVS to manage repositories for multiple 
clients on a single server.  Each client has his own repository on the 
server, so I don't have any issues between my clients' repsitories.

Until now, each client has had only one product, with the main trunk and all 
branches or his particular repository relating to that single product. 
However, I now have a case where one client wants to add more products to 
his the repository (he's finally getting his other products under revision 
control at my urging).

So my problem is, how do I manage this in CVS?  I'd like to keep a single 
repository for the client, with the idea being that any code that is shared 
between products won't have to be duplicated across multiple repositories. 
But (I think) I also want to be able to branch each product independently --  
as ProductA might need a new release branch (and version) while ProductB 
stays the course on the main trunk or whatever branch is current for it.

What I envision in the developer's sandbox is something like this:

    /shared sources
        /branches ??
    /product A
        /branch x
    /product B
        /branch y

Obviously, this won't match the repository, which for the above hierarchy 
would probably look something like this:

        /shared sources
        /product A
        /product B
    /branch x
        /product A
        /shared sources ??
    /branch y
        /product B
        /shared sources ??

And then, of course, there's the issue of third-party libraries.  ProductA 
might use version 1.0 of LibraryA while ProductB uses version 2.0 of the 
same library.

It gives me a headache just thinking about all of this.  Are there some best 
practices that can help with this sort of situation?  Everything I have ever 
found on branching practices focuses on the development of a single 
product -- as if nobody ever has to worry about more than one product, which 
is just plain naive.

How do others usually handle the situation of managing multiple, independent 
products (that might have to share code or libraries) on a single 
repository?  Is it even possible?  Am I going to be forced into creating a 
repository for each product?  Perhaps that will be the best way to handle 
this situation, but it seems like overkill and seems like it would wreak 
havoc on the ability to have shared code and third-party libraries without 
duplication on the repository server.

Another issue that comes out of this is how to checkout all of the code 
necessary to build all of the products in their various version 
configurations.  For instance, if I want to get the source to create a new 
release, I might need Branch X of Product A, and Branch Y of Product B, and 
I would have no choice but to execute two separate checkout operations.  I 
cannot define in any of the administrative files, that I know of, a way to 
say, "give me Release 2" which would checkout specified products and the 
appropriate branches for that release.

I would greatly appreciate any ideas, suggestions, or links that would help 
me to make the right decisions as I contemplate this task.

Thank you,

- Dennis 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]