On Wednesday, November 29, 2000 10:22 AM, Laine Stump
[SMTP:[EMAIL PROTECTED]] wrote:
> Laird Nelson <[EMAIL PROTECTED]> writes:
>
> > I'm curious about ampersand modules.
> >
> > Once a regular module (containing another module via the "&" construct)
> > is checked out, does that module actually *know* that it contains the
> > contained module?
> >
> > If my modules file says something like this:
> >
> > frobnicator frobnicator &caturgiator
> >
> > ...and I do this:
> >
> > cvs checkout -P frobnicator
> >
> > ...then I get this (as expected):
> >
> > frobnicator/somedir
> > frobnicator/caturgiator/someotherdir
> >
> > ...but now if I do this:
> >
> > cd frobnicator; rm -rf caturgiator; cd ..
> >
> > ...and then do this:
> >
> > cvs -q update -d -P -A
> >
> > ...then caturgiator does not reappear, suggesting that frobnicator's
CVS
> > directory does not record what the modules file engineered to happen.
>
> Correct. there isn't enough info about submodules in the upperlevel
> CVS directory to bring it back, and cvs update ignores the modules file.
>
> > The only way to set this back up would be to re-checkout the project or
> > checkout the caturgiator module directly at this level.
>
> I believe if you do cvs checkout from above the toplevel of an
> existing work directory, and it will update what's already there, and
> add anything new that it finds in the modules file. It won't *remove*
> anything that was taken out of the modules file, though.
>
> > Is that by design?
>
> It seems more likely it was just an accident of implementation. The
> entire modules file concept doesn't seem very well thought out to me;
> more like an afterthought tacked on one rainy afternoon...
>
This seems to be (on my quick look) an artifact of the files in the CVS
directory. Entries contains the directories (and files) which have been
checked out. Entries will have a D line for caturgiator. However CVS does
an update by recursing into each directory in the current directory and
doing an update there. In this case caturgiator doesn't have a directory
so it can't be recursed into. CVS then goes into the repository in the
location specified in Repository and tries to recreate files and
directories that are in Entries, but not visible in the current directory.
In this case caturgiator is not in the Repository location, so can't be
updated. I guess the short answer is not to delete caturgiator once you've
checked it out.
It seems to me that the intention of the modules file was to allow you to
perform several checkouts at one time, using an 'alias' instead of having
to remember all the repository locations.
***************************************************************
Chris Cameron Open Telecommunications NZ Ltd
Product Manager IN Product Management
[EMAIL PROTECTED] P.O.Box 10-388
+64 4 495 8403 (DDI) The Terrace
fax: +64 4 495 8419 Wellington
cell: +64 21 650 680 New Zealand
Life, don't talk to me about life ....(Marvin - HHGTTG)
_______________________________________________
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs