Re: [harinath cs umn edu: Re: Gnome-libs and libart_lgpl]



Michael Harnois <mharnois@willinet.net> writes:
> Miguel de Icaza <miguel@nuclecu.unam.mx> writes:
> > This mail is important, it is worth repeating it one more time :-)
> 
> Since, according to the cvs documentation, checkout and update -d
> should be equivalent on a tree after it has been checked out once,
> what's wrong with the gnome anoncvs setup that it doesn't work
> properly?

1. I never said

	"Don't use `cvs update'"
   
   I said 

	"Don't use `cvs update' to do the initial checkout"

   As you say, after a tree has been checked out once, checkout and
   update -d are virtually equivalent.

2. There's one case when `checkout' and `update -d' are different after
   a tree has been checked out.  That is when a virtual subdir has been
   added via the `modules' mechanism.  `checkout' knows how to handle
   it, `update -d' doesn't.  This could be construed as a bug in CVS.
   However, the documentation for the `modules' mechanism talks only
   about checkout, not about update.  There's nothing wrong in how the
   GNOME CVS Repository is set up.  It is just that people have slightly
   more expectations of orthogonality than CVS really has.

3. Let me explain why I said

	"Don't use `cvs update' to do the initial checkout"

   Before I do that, I'll clarify how `cvs update' to do initial
   checkout even works.

   When you first checkout, say, `gnome-lib' into a newly created
   /foo/bar

	$ cd /foo
	$ mkdir bar
	$ cd bar
	$ cvs -d :pserver:... co gnome-libs

   With CVS 1.10, the directory tree looks like

	/foo/bar/
	         CVS/
		     Root
		     Repository
		     ...
		 gnome-libs/
			    ...

   Note especially /foo/bar/CVS.  This makes /foo/bar a potential
   CVS working dir.  This is a difference from CVS 1.9, which does not
   create the CVS/ dir at the _same_level_of_the_checked_out_module_.

   What is significant about a "CVS working dir"?
   You can run "cvs update" in it.

   Now, if you want to get `gnome-core' in /foo/bar/.  One way, the
   right way, is to 

	$ cd /foo/bar
	$ cvs -d :pserver:... co gnome-core

   However, people have been taking advantage of /foo/bar being a CVS
   working dir and getting away with

	$ cd /foo/bar
	$ cvs update -d gnome-core

   This is what I strongly suggest not to do.

   One reason is related to the `modules' mechanism, which is used quite
   extensively in the GNOME CVS Repository.

   Another reason is that newer pre-releases of CVS revert to the v1.9
   behaviour and don't create the CVS/ directory in /foo/bar/, thus
   making the above trick not to work (unless, you had originally used
   CVS 1.10 in that directory, and then changed to a newer version).  I
   expect the next CVS to maintain its behaviour of not creating the
   CVS/ directory at the same level of the checked out module.

I hope this finally settles the issue.

- Hari
-- 
Raja R Harinath ------------------------------ harinath@cs.umn.edu
"When all else fails, read the instructions."      -- Cahn's Axiom
"Our policy is, when in doubt, do the right thing."   -- Roy L Ash



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]