It does matter whether you run a wrapper script or not.

If you were to run a wrapper script, the script could move the CVS subdirectory
out of the way before performing "cvs add".  After performing the operation, it
could then cleanup by combining the newly created CVS subdirectory with the old
one.

BTW, how *does* "cvs add" know which repository to add the subdirectory to?
Does it look in the current directory's CVS subdirectory?  Does it use the
CVSROOT environment variable?

In either case, I guess the fixes boil down to change "cvs add subdir" so as to
ignore only "bad" CVS subdirectories or create a wrapper for CVS so as to
accomplish the same thing.

Noel




[EMAIL PROTECTED] on 04/18/2000 04:17:08 PM

To:   [EMAIL PROTECTED]
cc:   (bcc: Noel L Yap)
Subject:  Re: Help: Scripts to change repositories




The script isn't doing what you think it's doing.

Fundamentally, I've got a script that swaps out CVS's control files into a
holding
directory, or swaps them out from a holding directory. And, there's two others
for
adding a new repository directory into the system (one for a repository that
already has a version of the module, one for a repository that doesn't.).

Wrapping or not, at some point I'm going to want to add a new sub-dir to an
existing project.

The first time I do this, no problem. The directory isn't in any of the
repositories, so it goes in fine.

Later, I run the switch script to switch to another repository's view of CVS.

Currently, the holding directories are stored as sub-dir's of CVS; this was
chosen
as (A), it is the only place ignored by CVS, and (B) it doesn't clutter any user
visable area. But this means that the second repository, if I want to add the
sub-dir to it, will complain that there already is a version in that directory,
but then complain that there are no admin files in there.

The solution? Well, if I put the holding directories elsewhere, I can then
always
try an 'rmdir CVS'. But that means that every directory will have a new sub-dir
that needs to be ignored; that means that every directory will need a .cvsignore
created and maintained, some of which will be ignored by CVS, others that will
NOT
be ignored by CVS. That's looking to be a nightmare.

Noel L Yap wrote:
>
> Well, assuming you're wrapping CVS, why not just move the CVS subdirectory out
> of the way before the actual "cvs add subdir" gets executed.  After it's done,
> you can move the CVS subdirectory back.
>
> Greg's change will maintain the recursive behaviour of "cvs add" (as it
should).
> It is mainly geared towards not having to explicitly "cvs add" a subdirectory
> (ie "cvs add subdir" will be implied when you "cvs add file" and the file's
> directory is not already in the repo).
>
> Noel
>
> [EMAIL PROTECTED] on 04/18/2000 11:30:22 AM
>
> To:   [EMAIL PROTECTED]
> cc:   [EMAIL PROTECTED]
> Subject:  Re: Help: Scripts to change repositories
>
> Whether or not there is an explicit need to do 'cvs add subdir', if I have a
> directory tree that has CVS subdirs, that do not have CVS control files in
them,
> will a 'cvs add' on the main dir work or not?
>
> With the current system, it will not.
>
> Incidently, I also am in favor of a different command ('radd', for recursive
> add?)
> that has zero chance of breaking other programs, or removing the 'add' command
> for
> two releases before putting it back in (think 'rlog'). Or, adding the '-R'
flag
> to
> 'add', and just saying that the default for add is '-l'.
>
> (So saying because recursive add will break my scripts. But since they don't
> work
> right anyways, :-).
>
> (Incidently, my earlier versions used import, rather than checking out the
root
> and adding a directory. That was a pain, as I had to always remember to clean
> out
> the crud (make clean). before using them. It was only a day or two ago that I
> actually needed to make a new module, and discovered that 'add' checks for,
and
> aborts, if it finds a CVS subdir without any regards to the presense of CVS
> control files.)
>
> Noel L Yap wrote:
> >
> > Greg Woods is working on removing the need to "cvs add subdir".  There was a
> lot
> > of traffic about it a couple of months ago.  I don't know where that
> development
> > stands now.
> >
> > I know this info doesn't help right now.  The only other alternative I know
is
> > if you make the change yourself locally.  Any global change will definitely
> > conflict with Greg's potential, pending changes.
> >
> > Noel
> >
> > [EMAIL PROTECTED] on 04/17/2000 04:54:52 PM
> >
> > To:   [EMAIL PROTECTED]
> > cc:   (bcc: Noel L Yap)
> > Subject:  Help: Scripts to change repositories
> >
> > I'm working on some scripts to allow people to use multiple repositories
> > with a single set of files, and I've run into a problem.
> >
> > 'cvs add subdir' will fail to work if there is a CVS directory in
> > subdir. No test is made to see if there is no control files in subdir or
> > not, only if the CVS directory exists.
> >
> > In other words, my scripts work fine, changing the cvs repository
> > information around, until you add a new subdirectory. Then, it can be
> > added to one of your repositories, only.
> >
> > The only work-around that I can see at the moment is to not store the
> > 'extra repository' information in the CVS directory, but in another
> > direcctory, and to be 'rmdir'/'mkdir'-ing CVS directories a lot. This
> > has the disadvantage of exposing at least one new directory into public
> > view.
> >
> > Is there any chance that we can get 'cvs add subdir' to say 'Hey,
> > subdir/CVS does exist, but is not in the repository and has no
> > Repository, Root, Entries, etc -- lets create those admin files and add
> > subdir to the repository'?
> >
> > Michael






Reply via email to