[3007] in Release_Engineering

home help back first fref pref prev next nref lref last post

Source Tree meeting

daemon@ATHENA.MIT.EDU (Richard Basch)
Fri Apr 16 10:56:15 1993

Date: Fri, 16 Apr 1993 10:56:10 -0400
To: builder@MIT.EDU
Cc: tjm@MIT.EDU, rel-eng@MIT.EDU
From: "Richard Basch" <basch@MIT.EDU>


There wasn't critical mass...

What is your availability for:

	Tue 4/27  10:30-12
	Thu 4/29  3-4:30
	Fri 4/30  anytime

The people who need to be there: mar, vrt, miki, cfields, probe.

Rough agenda:
- Quick discussion of problems
- Agree on the constraints
- Hash out possible solutions
- Discuss issues, next steps, etc.

Hopefully, this will be straight-forward, but I suspect the constraints
and issues sections will re-surface a few times during the meeting.

The following is a (poor) illustration of my proposed solution
--------------------------------------------------------------

	rel.bld	-->	rel.src		rcs (CVS tree)

	PORT
	bld -> src -->	rel.src

The release sources will frequently be updated from the CVS tree, so
that people are able to view /source and see what is currently being
integrated into the "next release".

Checkins would be "disallowed" from anything other than rel.src while a
field release is being built (this includes such things as the field
release of 7.5B for the RISC/6000).  Evaluation port builds are probably
not as major of a concern to archive exactly.

The reason for the separate build and source volumes for the port is so
that the build volume can easily be blown away in bulk.  Another reason
is so that when the port is finally checked-in, everything can be
tagged.  The sources for a port build would normally be links to the
release sources.  Whenever a change needs to be made that is basically a
function of the port (rather than fixing obvious bugs or problems with
the release), one would checkout that portion of the tree and break the
links (normal bug-fixes, etc. can be fixed immediately in the release
sources).

Issues:
- Checkout must preserve the "read" acl from the CVS tree; it must edit
  the system:anyuser bits and all other "rl" related bits in the tree
  in which the sources are being checked-out.
- Since we sometimes remove obsolete modules from the source tree, we
  need to implement a "delete" operation which will keep the RCS history
  around should you want to check-out the old version of a tree.  One
  possible way of implementing this is to place a "DELETE" RCS tag on
  the deleted item and when a check-out is run, if no version is
  specified and the "head" has the DELETE tag, ignore it.  For
  cleanliness, CVS should prune empty directories during the checkout.

The constraints I see are:
- Difficult to track the history of the source (no RCS tags)
- Difficult to effect multiple patch releases (need to recopy the
  sources, change various mountpoints to have the new volume names,
  etc... a cell management headache).
- Difficult for multiple ports to take place concurrently (close to
  impossible, since rcsmerge is not in our daily repetoire).  CVS is
  basically a friendlier concurrency layer on top of RCS, but we
  could theoretically implement our solution by strict RCS practices.
- Copying the source trees automatically gets us the RCS histories for
  all the previous revisions.  Again, this can be solved, but it does
  require lots of cell management, per release or integration.  During
  each one of these integrations, NO CHANGES may take place, and this
  can take a few days.

Tasks to complete:
- Setup a common area for the CVS binaries and related support utilities
  (new RCS, GNU diff, etc).
- Extend CVS as necessary to implement the semantics that we require.
- Convert the source tree on a mutually agreed upon schedule.

Of course, the above makes several assumptions about buy-in and assumes
that we have hashed this out in greater detail than I have presented
here.  It is only one possible solution, but one that I thought would be
best to present to everyone since I have a little more than a simple
conception.  Other solutions and ideas welcome.  In the past two days, I
have received several mail messages from several people, including some
pointers to alternate software.  I will try to collate all of this for
people to peruse.

-Richard

home help back first fref pref prev next nref lref last post