Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Feb 1996 16:22:57 -0700
From:      Nate Williams <nate@sri.MT.net>
To:        "Karl Denninger, MCSNet" <karl@mcs.com>
Cc:        hackers@freebsd.org
Subject:   Re: CVS usage question
Message-ID:  <199602112322.QAA17568@rocky.sri.MT.net>
In-Reply-To: <m0tlilL-000IDUC@venus.mcs.com>
References:  <m0tlilL-000IDUC@venus.mcs.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> I've been a "supper" of the STABLE tree for a while, and on the suggestion
> of a number of the people doing development I've decided to stick a 4G disk
> in a machine and start mirroring the CVS tree instead -- with the eventual
> hope of being not only able to support our internal use of FreeBSD better,
> but also to possibly open a "supX" server for people to grab from (I note
> that sup4 is offline, sup3 is unreachable, etc.)

Cool.

> Now, however, if I'm going to grab CVS stuff instead of the STABLE tree
> itself, I need to know how to productively use CVS.  Here are the goals:

Unfortunately, most of the goals are un-reachable, but I'll comment on
them anyway.

> 1)	To be able to extract -STABLE and/or -CURRENT to work with
> 	here.  (syntax examples would be most helpful!)  Generally speaking,
> 	once I check one of these out, I won't want to check it out for
> 	modifications (with the possible exception of one or two files which
> 	I *WILL* want to check out for changes).

Since CVS allows modification of any bits that are checked out, there is
no way to prevent you or anyone else from modifying these files short of
the unix allows it now with permissions.

For stable bits:
# cd /usr
# rm -rf src
# cvs co -r RELENG_2_1_0 src
...
[ To update bits ]
# cd /usr/src
[ Or wherever ]
# cvs update -Pdr RELENG_2_1_0

For current bits:
# cd /usr
# rm -rf src
# cvs co src
...
[ To update bits ]
# cd /usr/src
[ Or wherever ]
# cvs update -PdA

> 2)	To be able to check *in* to a *LOCAL ONLY* branch changes which
> 	are in fact local, and incorporate THOSE into the extractions I make
> 	(I realize the risks inherent in doing this with version mismatches,
> 	but the places we change things aren't likely to be subject to
> 	revisions by the primary developers).  It would be ideal if these
> 	revisions could then be blocked from SUPping by others (if not, I'll
> 	need two code trees -- blech).

Simply checking out a copy of the sources in a spot in your tree, and
then modifying the bits in that tree and checking them in will work.
However, as soon as you re-sup the CVS bits from freefall your changes
in the CVS tree will be over-written.

> 	The goal here is to be able to, say, extract a "usr.bin/login" from
> 	either our private change tree OR from the standard -STABLE tree.
> 	Is this possible while SUPping updates for the CVS masters?

Nope, because the idea of SUPping the CVS bits is to guarantee that you
are getting the *exact* same bits as everyone else.  If the bits are
different on your site vs. the site you are supping from, SUP will
notice the discrepancey make sure you get a copy of the 'master' file on
site.

> 3)	To be able to SUP a new "Cvs" update *WITHOUT* destroying my local
> 	changes (one of the problems I have right now with SUPping -STABLE
> 	is that I have to be most careful where I set up as the target, and
> 	how I merge things -- this will get intolerable if I try to mirror
> 	daily and offer a SupX server...)

The only solution in the current schema I'm aware of is this:
a) Checkout a version from whatever version you wish to modify the bits.
b) Modify the bits.
c1) As the bits change in the release, use 'cvs update' and such commands
    to keep your bits 'in-sync' with the changes being made to the tree.
OR
c2) Once you've made your local-changes, try to convince the CVS folks
    of the validity of your changes so that you don't need to go through
    the hassle of c1.

> 4)	How does one build the FreeBSD/2.1.0-RELEASE (or -STABLE) *package* 
> 	format (so I can load machines from a local code server instead of 
> 	FTPing from somewhere else?)  I know I could just pull the package
> 	files, but I'd like to have a set which are custom to us -- and one
> 	for general FTPing by the public as well.  Doable?

I'll let Satoshi respond to this, but it's *very* do-able, and I'm sure
how things are done now.

> Anyone got a quick tutorial on CVS they can blow at me, point me at, or just
> lend a hand?  Or am I asking for CVS and SUP to do things they aren't
> designed for...

CVS can do it, given the above constraints.  Start off with 'man cvs',
and then read the FAQ in the CVS source directory.


Nate



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