Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Jan 2002 09:55:02 -0700
From:      Nate Williams <nate@yogotech.com>
To:        Sheldon Hearn <sheldonh@starjuice.net>
Cc:        Terry Lambert <tlambert2@mindspring.com>, arch@FreeBSD.ORG
Subject:   Re: Adding support for a global src tree serial number 
Message-ID:  <15449.30438.698921.182380@caddis.yogotech.com>
In-Reply-To: <80628.1012484102@axl.seasidesoftware.co.za>
References:  <3C5944A4.4927F812@mindspring.com> <80628.1012484102@axl.seasidesoftware.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
FWIW, this has been gone over many times in the past.  We even had a
workable solution, but unfortunately Richard W. (the originator of said
feature request) refused to acknowledge the issues and propose a
solution that would satisfy all problems.

Some of the issues are:

1) A single static file is not adequate, becase we have multiple active
   branches.  Therefore, each branch needs it's own file, and that file
   must only exist on that branch.

2) If a new branch is created, the system must recognize the new branch,
   and auto-create a new serial file for that branch.  (Otherwise, it
   will be forgotten.)  This is especially true with the new 'release
   product' branches.

3) That file must change at some frequency often-enough to be of use.
   Daily would probably be Ok, but more fine-grained would be better.

4) The file must exist in the /usr/src tree (and not in the CVS tree),
   since a large number of consumers do *NOT* grab the source tree, but
   still have the need to track the tree's age/history.  (This implies
   that it must be some sort of RCS file.)

5) The file must not grow w/out bounds (which means that we'd have to
   play games if we used an RCS file above to keep things happy, and
   make sure that CVS/CVSup don't get all bent out of shape.)

6) The file must allow itself to be easily mirrored by CVSup, such that
   *all* consumers of FreeBSD who access the source tree can easily
   mirror the file.  (Similar to 5)

7) The file must be in a format that can be queried by a tool, so that
   the user can easily identify the lineage of his/her source tree.
   Possibly create a new 'srcid(8)' or somesuch that can read the format
   of the file.

The hardest problem are related to multiple branches and mirrored
repositories.  If we had a single repository and a single branch, the
problem would be trivial.  Unfortunately, we don't.

The only solution we could come up with was a 'fake' RCS file that was
hand-edited to increase the version # on a regular basis, and that a new
'branch' was added to this file everytime a new 'branch' was added to
the tree.

This means that the file would grow, but it would only grow as fast as
we add branches.  This isn't too bad.

However, the hand-editing of the file, as well as auto-creation of new
branches was a sticking point.  I'm sure someone with lots of free time
on their hands could probably implement something in the CVSROOT scripts
to do this.

At that point, we needed to verify that CVS/CVSup wouldn't have a cow.
I think I did a quickie test, and any recent version CVS was fine with
things (CVS 1.9 or later).  I didn't check what CVSup would do with it
though.




Nate

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




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