[Top][All Lists]

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

repository layout for large project

From: Sam Izzo
Subject: repository layout for large project
Date: Thu, 05 Feb 2004 15:25:31 +1100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031205 Thunderbird/0.4


I'm after some advice on how I should set up and manage a repository for
a large project.  The project is based around plugins (DLLs).  There is
a main application shell which has some base functionality, a set of
application plugins, and a set of minor plugins that are used by
application plugins (actually we call them modules but I'll use "plugin"
because of possible confusion with CVS modules).


   |-- Appshell
   |-- Plugins
   |      |-- plugin 1
   |      |-- plugin 2
   |      |-- plugin 3
   |-- Minor Plugins
   |      |-- minor plugin 1
   |      |-- minor plugin 2
   |      |-- minor plugin 3

Now ordinarily there's a basic off-the-shelf version of the product.  A
release of version 1.3 of the product, for example, would include
Appshell version 1.3, plugin 1 version 1.5, plugin 2 version 1.6, etc.
A release of version 1.4 of the product might include Appshell version
1.4, plugin 1 version 1.5, and plugin 2 version 1.8 (i.e. plugin 1
hasn't changed).

On top of that, some clients require specific changes to particular
plugins.  So they might purchase version 1.3 but then a custom version
of plugin 1 (based on the latest release version), so they might get
plugin 1 version 1.5-company A.

Clearly branching is going to help immensely.  The thing is where would
be the best place for the branching to occur?  Can one even branch a CVS
module at a sub-directory, or can branching only occur at the root?
Should the entire project be under one CVS module in the repository
(with appropriate sub-directories) or should each plugin be a CVS
module?  Should there be a branch of the entire project for each
customer?  That seems a logical way to do it, but the only thing with
that is that we might only be changing one plugin, and there might be
many changes to other plugins, so that seems a bit overkill because the
only difference between the off-the-shelf version and the client version
is one plugin, yet we have the possibility to change the entire code
base.  I suppose then it comes down to the fact that when we build a
release version we build the main stuff off the trunk and then build
that specific plugin from that branch and just forget about the rest of
the branch.

And then eventually we might want to merge a customer specific version
back into the trunk because it might turn out that the customer specific
version has changes that are appropriate to the off-the-shelf version
(i.e. they're things that apply to everyone and anyone).  Not to mention
we have to manage bug fixes for custom plugins and also the
off-the-shelf version.

Argh, I'm not sure!

Apologies if some of this is covered in the manual; I've been reading
and reading and I think I'm suffering from information overload :)
Double apologies for the long winded email!

Any tips would be muchly appreciated!


reply via email to

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