From owner-freebsd-hackers Sun Feb 11 15:20:24 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id PAA06949 for hackers-outgoing; Sun, 11 Feb 1996 15:20:24 -0800 (PST) Received: from rocky.sri.MT.net (rocky.sri.MT.net [204.182.243.10]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id PAA06938 for ; Sun, 11 Feb 1996 15:20:17 -0800 (PST) Received: (from nate@localhost) by rocky.sri.MT.net (8.6.12/8.6.12) id QAA17568; Sun, 11 Feb 1996 16:22:57 -0700 Date: Sun, 11 Feb 1996 16:22:57 -0700 From: Nate Williams Message-Id: <199602112322.QAA17568@rocky.sri.MT.net> To: "Karl Denninger, MCSNet" Cc: hackers@freebsd.org Subject: Re: CVS usage question In-Reply-To: References: Sender: owner-hackers@freebsd.org Precedence: bulk > 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