[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Question with modules
From: |
Bulgrien, Kevin |
Subject: |
RE: Question with modules |
Date: |
Wed, 31 May 2006 11:13:04 -0500 |
> -----Original Message-----
> From: Mario Charest [mailto:address@hidden
> Sent: Wednesday, May 31, 2006 9:22 AM
> To: Bulgrien, Kevin
> Subject: RE: Question with modules
>
> > -----Original Message-----
> > From: Bulgrien, Kevin [mailto:address@hidden
> > Sent: Wednesday, May 31, 2006 9:59 AM
> > To: Mario Charest; address@hidden
> > Subject: RE: Question with modules
> >
> > -----Original Message-----
> > We have two different development branches of two distinct product.
> >
> > standard/prg1
> > standard/prg...
> > standard/lib
> >
> > grade/prg1
> > grade/prg...
> >
> > Now I want standard to share the library directory with grade. I
> > edited CVSROOT/modules files as such:
> >
> > grade/lib standard/lib
> > ProductC -a grade grade/lib
> >
> > When I do "cvs get ProductC" that works fine but if I try "cvs get -
> > dtmpname ProductC" the lib directory is not checkout and I see the
> > following error:
> >
> > Cvs checkout: existing repository /cvs/home/grade does not match
> > /cvs/home/standard/lib Cvs checkout: ignoring module grade/lib -----
> > Original Message-----
> >
> > I'd start here in the manual.
> >
> > http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs_18.html#SEC159
> >
> > C.1 The modules file
> >
> > But more specifically, this section is likely what you really are
> > looking for in this case:
> >
> > http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs_18.html#SEC162
> >
> > C.1.3 Ampersand modules
> >
> > ---
> >
> > I think your solution may be similar to:
> >
> > standard/prg1
> > standard/prg...
> > standard/lib
> >
> > grade/prg1
> > grade/prg...
> >
> > grade/lib &standard/lib
> > ProductC -a grade grade/lib
>
> Thanks
>
> I already tried that and it's not quite want I'm looking for. This
> creates
>
> Product/standard/lib
>
> But I want
>
> Product/lib
>
> I find very strange that my original solution only works when
> -d is NOT
> used. I don't understand the rational behind that behavior.
Ok, there's nothing like a little bit of experimentation with a test
repository in conjuction with the manual to learn how things work. With a
certain amount of open-source-software-leg-work, a sample repository
structure can be created in a vanilla sandbox (CVS dirs pruned for brevity):
$ mkdir -p /path/to/cvs/repository
$ cvs -d /path/to/cvs/repository init
$ cd ~/cvs
$ cvs -d /path/to/cvs/repository co -d test
$ cd test
$ mkdir -p standard/prog1
$ mkdir -p standard/lib
$ mkdir -p grade/prog1
$ >standard/prog1/standard.c
$ >standard/lib/shared.lib
$ >grade/prog1/grade.c
$ tree
.
|-- CVSROOT
| |-- checkoutlist
| |-- commitinfo
| |-- config
| |-- cvswrappers
| |-- editinfo
| |-- loginfo
| |-- modules
| |-- notify
| |-- rcsinfo
| |-- taginfo
| `-- verifymsg
|-- grade
| `-- prog1
| `-- grade.c
`-- standard
|-- lib
| `-- shared.lib
`-- prog1
`-- standard.c
Commit the test scenario into the test repository, then, a sample module
setup may be created. After a lot of experimentation, we arrive at:
$ cat CVSROOT/modules
lib -d lib standard/lib
grade-shared-libs -d . &lib
grade-prog1 -d grade/prog1 grade/prog1
grade-progs -d . &grade/prog1
grade-libs -d grade &grade-shared-libs
grade -d . &grade-progs &grade-libs
Product -d Product &grade
Test the sample module... and post it for with CVS dirs pruned for brevity.
$ cd ..
$ mkdir tmp
$ cd tmp
$ cvs -d /path/to/cvs/repository co Product
cvs checkout: Updating grade/prog1
U grade/prog1/grade.c
cvs checkout: Updating lib
U lib/shared.lib
$ tree
.
`-- Product
`-- grade
|-- lib
| |-- CVS
| `-- shared.lib
`-- prog1
`-- grade.c
Is that what you are looking for? If not, I'd suggest playing with a sample
repository as I showed above. You should be able to figure it out with what
I already did for you.
---
Kevin R. Bulgrien
Design and Development Engineer
General Dynamics C4 Systems
http://www.gdsatcom.com/