> Otto Moerbeek wrote [2012-02-03 12:47+0100]:
> > I like to say that long delays I have seen when using cvs had to do
> > with multiple different values of CVS/Root files in my local tree.

Otto, could you please elaborate?
How does this slow down a cvs update?

Is it really due to the fact that there are multiple different *values*
stored in the CVS/Root files? So that cvs needs to consult multiple
cvs servers, and *that* is what gets slow?

I just checked, and I have three different servers mentioned
in my CVS/Root files; a cvs update is slow, but when I have
just one server mentioned in the CVS/Root files, it is not faster.

Also, specifying 'cvs -d mirror' explicitly should get rid of this
problem then (right?), and speed things up, which it doesn't.

Or is the slowdown possibly due to the sheer *number* of CVS/Root
files that are consulted? Would that be remedied by cvs -d too?

Actually, cvs(1) says:

  -d CVS_root_directory
        Use CVS_root_directory as the root directory pathname of
        the master source repository.  Overrides the setting of the
        CVSROOT environment variable.  This value should be specified
        as an absolute pathname.

   CVS/Root
         Pathname to the repository ( CVSROOT ) location at the
         time of checkout.  This file is used instead of the CVSROOT
         environment variable if the environment variable is not
         set.  A warning message will be issued when the contents
         of this file and the CVSROOT environment variable differ.
         The file may be over- ridden by the presence of the
         CVS_IGNORE_REMOTE_ROOT environment variable.

It doesn't state explicitly whether 'cvs -d'
makes the CVS/Root files ignored. Does it?

Also, the wording for 'CVS/Root' doesn't seem to be entirely correct:
If I untar, say, sys.tar.gz, then my local tree contains no CVS/Root
files, and if I later do a 'cvs -d mirror up -Pd', the tree gets
populated with CVS/Root files (mentioning mirror) -- that's not 
a "time of checkout", that's an update. Also, having
CVS_IGNORE_REMOTE_ROOT doesn't "override" CVS/Root,
it just makes it ignored, right?

> > Those different entries can be created when doing a cvs up -d that
> > creates a new dir.

Not only. A 'cvs -d mirror up -d' of a freshly untared sys.tar.gz creates
CVS/Root files all over the place, *not* just in the new directories
(that got created due to the 'up -d'). For example it creates
./sys/arch/i386/CVS/Root, while the directory /sys/arch/i386/
definitely was there before (so it didn't get created with 'up -d').

> If a cvs -d option is used at the same time, the
> > CVS/Root entry for tht dir wil be different than the other's. 

Yes, but it will also change the content of CVS/Root
in directories that existed before.

> > The exact cause of the slowdown is not known to me. But when you are
> > switch repositories once in a while it's easy to get this case. 
> > 
> > I repair this by find . -name Root | xargs rm and using a explicit cvs
> > root.

So, using an explicit cvs root does not ignore the CVS/Root files?
Because if it does, then the 'find | xargs rm' should make no difference,
right?

> Now this is really another important issue of scattered
> information, is it, and it's not noted in anoncvs.html!
> I've slightly modified your command, i think my version is more
> secure for use on a webpage.
> 
> >     -Otto
> 
> --steffen
> 
> Index: anoncvs.html
> ===================================================================
> RCS file: /cvs/www/anoncvs.html,v
> retrieving revision 1.363
> diff -a -p -u -r1.363 anoncvs.html
> --- anoncvs.html      24 Jan 2012 09:57:35 -0000      1.363
> +++ anoncvs.html      3 Feb 2012 13:33:28 -0000
> @@ -542,6 +542,15 @@ add the <em>-d anon...@anoncvs.ca.openbs
>       # <strong>cd /usr/src</strong>
>       # <strong>cvs -d anon...@anoncvs.ca.openbsd.org:/cvs -q up -Pd</strong>
>  </pre>
> +
> +<p> And because cvs(1) stores the name of the server which is in use once
> +a directory gets created in the file CVS/Root inside this new directory,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 ^^^

(not only)

> +it maybe wise to issue a command sequence like the following:
> +<pre>
> +     # <strong>cd /usr/src</strong>
> +     # <strong>find . -path '*CVS/Root' | xargs rm</strong>
> +     # <strong>cvs -d anon...@anoncvs.ca.openbsd.org:/cvs -q up -Pd</strong>
> +</pre>
>  </ul>
>  

I think this is blind typing without understanding what is going on
(not that I know), contrary to the ways of our brilliant FAQ.
Let's understand it first.

Can someone with internal knowledge of cvs
shed some light on this please?

        Thank you for your time

                Jan

Reply via email to