Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 02 Apr 1998 07:45:16 -0800
From:      John Polstra <jdp@polstra.com>
To:        nik@iii.co.uk
Cc:        obrien@NUXI.com, cvs-committers@FreeBSD.ORG
Subject:   Re: cvs commit: distrib/cvsup/sup README distrib/cvsup/sup/doc-all releases list.cvs.en distrib/cvsup/sup/www releases list.cvs.en list.cvs.text 
Message-ID:  <199804021545.HAA04034@austin.polstra.com>
In-Reply-To: Your message of "Thu, 02 Apr 1998 15:05:18 %2B0100." <19980402150518.05921@iii.co.uk> 

next in thread | previous in thread | raw e-mail | index | archive | help
>     doc-all
>        doc-base
>        doc-en
>            doc-en-faq
>            doc-en-handbook
>        doc-ja
>            doc-ja-faq
>            doc-ja-handbook
> 
> and so on.
> 
> Is it possible to use a scheme like this to create meta-collections 
> that don't have a 1:1 mapping to the directory structure? For example, a
> doc-handbook collection that consisted of doc-en-handbook and 
> doc-ja-handbook?

Yes, it is possible.  The content of a collection is more or less
arbitrary.  But logistically, it could be a problem.  It is bad if
a user tries to get two collections that overlap in some way.  For
example, if a user asked for doc-handbook and doc-en, then both
collections would try to update the doc/en/handbook tree.  That
tends to lead to all manner of strange problems.  CVSup processes
the collections independently, so it doesn't know that they overlap.
And because of the extensive pipelining, the "scanning" part of the
program might be examining the files covered by doc-handbook at the
same time that the "updating" part was updating the doc-en files
underfoot.  On the client side, CVSup expects you to keep your hands
off the files while it is updating them.  (On the server side, it can
tolerate just about anything.  That's why mirrors work.)

We could document this and warn about it, but experience has shown
that to be fairly ineffective.  Trust me.  I hear a lot more about it
than you do. :-)  For example, the "stable-supfile" in
/usr/share/examples/cvsup contains this warning:

###############################################################################
#
# DANGER!  WARNING!  LOOK OUT!  VORSICHT!
#
# If you add any of the ports collections to this file, be sure to
# specify them like this:
#
#   ports-all tag=.
#
# If you leave out the "tag=." portion, CVSup will delete all of
# the files in your ports tree.  That is because "RELENG_2_1_0" and
# "RELENG_2_2" are not valid tags for the ports portion of the CVS
# repository.
#
###############################################################################

And you wouldn't believe the number of people who have blindly added
"ports-all" to the file, without the tag part, and promptly gotten
their entire ports tree removed.

Another possibility would be for CVSup to check for overlap between
collections at startup time.  But that's pretty hard.  The contents of
collections are specified as glob-style patterns, with both inclusion
patterns and exclusion patterns.  Given two sets of such patterns,
it's not at all easy to determine whether they are going to overlap.
For one thing, it depends on the names of the files that are actually
present.

A third possibility would be to specify somehow in the server's
administrative files which collections conflict with each other.
That might be the best bet.
--
   John Polstra                                       jdp@polstra.com
   John D. Polstra & Co., Inc.                Seattle, Washington USA
   "Self-knowledge is always bad news."                 -- John Barth

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804021545.HAA04034>