> 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