From owner-freebsd-hackers Mon Mar 17 14:59:45 2003 Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AC78B37B404 for ; Mon, 17 Mar 2003 14:59:42 -0800 (PST) Received: from out005.verizon.net (out005pub.verizon.net [206.46.170.143]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6F91443FA3 for ; Mon, 17 Mar 2003 14:59:41 -0800 (PST) (envelope-from babkin@bellatlantic.net) Received: from bellatlantic.net ([138.89.156.209]) by out005.verizon.net (InterMail vM.5.01.05.27 201-253-122-126-127-20021220) with ESMTP id <20030317225939.FPVX20701.out005.verizon.net@bellatlantic.net>; Mon, 17 Mar 2003 16:59:39 -0600 Message-ID: <3E765359.7FC6C541@bellatlantic.net> Date: Mon, 17 Mar 2003 17:59:37 -0500 From: Sergey Babkin X-Mailer: Mozilla 4.7 [en] (X11; U; FreeBSD 4.7-RELEASE i386) X-Accept-Language: en, ru MIME-Version: 1.0 To: Terry Lambert Cc: Nate Williams , hackers@FreeBSD.ORG Subject: Re: making CVS more convenient References: <3E73DCF7.80490FA6@bellatlantic.net> <15988.49648.483313.383942@emerger.yogotech.com> <3E74CC37.DF83EE46@bellatlantic.net> <3E750471.3498C9BE@mindspring.com> Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 7bit X-Authentication-Info: Submitted using SMTP AUTH at out005.verizon.net from [138.89.156.209] at Mon, 17 Mar 2003 16:59:38 -0600 Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Terry Lambert wrote: > > Sergey Babkin wrote: > > Nate Williams wrote: > > [ ... "CVS cache and cache coherency" ... ] > > > Yet another idea is to be able to make "local commits" with committing > > them to the central remote repository later. Now I have to use RCS > > locally for the temporary in-delevopment versions of file. Would > > be nice to have a kind of a local branch which can be later committed > > as a whole - in one commit per file, or by duplicating all the > > intermediate versions with their messages. > > Not really possible, without CVSup coming onto a vendor branch instead Actually, I was thinking of the opposite: doing all the changes on a vendor branch (or in some separate local repository altogether), then merging them into the main branch. Think of the following sequence that can be used now: cvs co rcs ci # save the baseline #... some modifications done rcs ci #... more modifications rcs ci # then someone committed another change to the repository and we want # to merge that change in cvs update # do the manual merge if neccessary rcs ci # save the merged version #... more modifications rcs ci # OK, let's suppose that our changes are finally complete, and nobody # else has committed any other changes in between cvs ci So pretty much all I want is to make this procedure a bit more convenient, able to handle whole subdirectories as opposed to separate files. As a model consider this: suppose we build a separate copy of the CVS binary, called "mycvs" that has the following differences from the normal CVS: 1. Instead of the variable CVSROOT it uses MYCVSROOT 2. Instead of the metadata subdirectory name CVS it uses the name MYCVS 3. It never touches any of the keywords (such as $Id etc.) 4. When asked to add a file, it automatically creates the whole path of intermediate directories for it. (How does it know where the checked-out tree starts ? There are many more or less obvious and convenient ways to do that, so let's leave this issue alone for now). Then in the example above you can do export MYCVSROOT=~/tmp/cvsroot mycvs init And do everyhing as in the previous example, only replacing rcs with mycvs (and obviously you wold need to do "mycvs add" before the fiest "mycvs ci"). > of verbatim copying of the repository. > > Incoherent: > > ,-------. ,-------. > | Main |---- cvsup --->| Cache | > | Repo | | Repo | > `-------' `-------' > ^ | > | cvs co > cvs ci | > | V > | ,-------. > | | Work | > `-------------------| Copy | > `-------' Why is it incoherent ? CVS checks that the version obtained by "cvs co" and then modified is still the top of the tree. If it's not, it will refuse to commit and will request you to do an update. -SB To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message