info-cvs
[Top][All Lists]
Advanced

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

difficult modules setup question


From: Thomas S. Urban
Subject: difficult modules setup question
Date: Fri, 21 Dec 2001 00:27:50 -0800
User-agent: Mutt/1.3.21i

My organization has been using CVS for a while, and our usual practice
of having everyone checkout the entire tree is becomming cumbersome.
Beyond the steady growth of the CVS repository, we are about to move the
rest of the company from Source Safe to CVS.  I am trying to set up the
module such that developers can easily check out only those pieces they
need.  Ideally, overlap between modules should result in only a single
checkout in the sand box.  This  is a greatly simplified view of what
our repository looks like.  The build files under top are required by
all projects, but everything else depends on the module.


Repository:
top/
        build.file.1
        build.file.2
        build.file.3
        libraries/
                lib1/
                lib2/
                lib3/
                lib4/
                ....
        apps/
                app1/
                app2/
                app3/
                ....

Modules 1 is 'app1', requires lib1, lib2, build files, this is what the
sandbox should look like after 'cvs co app1':

top/
        build.file.1
        build.file.2
        build.file.3
        libraries/
                lib1/
                lib2/
        apps/
                app1/

Module 2 is 'app2', requires lib2, lib3, build files, this is what the
sandbox should look like after 'cvs co app2':

top/
        build.file.1
        build.file.2
        build.file.3
        libraries/
                lib2/
                lib3/
        apps/
                app2

A developer working on module 1 and module 2 should get a sandbox that
looks like this after 'cvs co app1 ; cvs co app2':

top/
        build.file.1
        build.file.2
        build.file.3
        libraries/
                lib1/
                lib2/
                lib3/
        apps/
                app1
                app2

I am having a great deal of difficulty setting up the modules to acheive
this result.  If I define these modules:

_libraries_lib1         -a      libraries/lib1
_libraries_lib2         -a      libraries/lib2
_libraries_lib3         -a      libraries/lib3
_apps_app1              -a      apps/app1
_apps_app2              -a      apps/app2
_apps_app3              -a      apps/app3

app1            -d top          &_libraries_lib1 &libraries_lib2 \
                                &_apps_app1
app2            -d top          &_libraries_lib2 &libraries_lib3 \
                                &_apps_app2

This gets everything but the build files under 'top/' (which there are
many of, and I'd prefer not to list them separately).  (off-topic, but
the rhs of the aliases in these commands are *not* complete relateive
path names from CVSROOT (don't include 'top/'), but cvs seems to check
them out ok anyway ??).

I can't figure out how to get the build files where I need them.  I've
tried:

_build_files            -a      -l top

but cvs complains about using '-a' with other options. If I do:

_build_files                    -l top

and then add it to the real modules, eg:
app2            -d top          &_libraries_lib2 &libraries_lib3 \
                                &_apps_app2 &_build_files

I end up with the build files in top/_build_files/ Not what I want.

If I modify _build_files above to:

_build_files            -d top -l top

the build files end up in top/top/, again, not what I want.  Changing it
to

_build_files            -d . -l top

results in cvs errors.  Is there anyway to do what I want with the
current module system short of listing each file I want under 'top/'
individually for the module?

If I can't find a solution with the modules, I know I can move all the
build files to a separate subdirectory, but I'd rather not do this
because it would require modification of build files throughout our tree
and in several branches.


TIA
Scott


P.S.  I'm using _ prefixes to denote modules that are internal, and not
meant to be checked out directly.  Any interst in a patch to cvs to get
'cvs co -c' to not output these (or better, some user definable
'internal' pattern for modules)?




-- 
Many a man has fallen in love with a girl in a light so dim he would
not have chosen a suit by it.
                -- Maurice Chevalier



reply via email to

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