From owner-cvs-all Sun Jul 15 9:10:39 2001 Delivered-To: cvs-all@freebsd.org Received: from vega.dmnshq.net (vega.dmnshq.net [194.19.34.94]) by hub.freebsd.org (Postfix) with SMTP id 5559337B403; Sun, 15 Jul 2001 09:10:31 -0700 (PDT) (envelope-from eivind@vega.dmnshq.net) Received: (from eivind@localhost) by vega.dmnshq.net (8.11.4/8.9.3) id f6FCZ3M12757; Sun, 15 Jul 2001 14:35:03 +0200 (CEST) (envelope-from eivind) Date: Sun, 15 Jul 2001 14:35:03 +0200 From: Eivind Eklund To: Matt Dillon Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Remote CVS/Template Message-ID: <20010715143503.A10888@FreeBSD.org> References: <3B4F1FCD.7F2D4842@FreeBSD.org> <20010713120140Q.jkh@osd.bsdi.com> <20010713211017.A57434@heechee.tobez.org> <20010713123241X.jkh@osd.bsdi.com> <200107132214.f6DMET571067@earth.backplane.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <200107132214.f6DMET571067@earth.backplane.com>; from dillon@earth.backplane.com on Fri, Jul 13, 2001 at 03:14:29PM -0700 Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Fri, Jul 13, 2001 at 03:14:29PM -0700, Matt Dillon wrote: > > I don't think so, and it really should be in the committer's guide. > > That's a strong hint to the folks who implemented it. :) > > It's in CVSROOT/rcstemplate, but for the life of me I can't figure out > how to get the cvs commit I do on my local machine to use the rcstemplate > sitting on freefall when it brings up the editor session. Anybody know? Short answer: You can't without changing CVS. Long answer: When the CVS client is used locally, it does not create CVS/Template, as the template is easy to get from the local repository. When the CVS client does a remote checkout, it creates CVS/Template for use when committing. This avoids the need to do a separate checkout of the template from the server at the time of each commit, and allows the implementation of remote commit based on just pushing all data and a single command to the server, followed by getting responses from the server. In order to change this, we'd need to do several commands in order to fetch the template and commit during a single remote operation (ie, without having the user authenticate several times.) This does, according to the protocol documentation, probably not work correctly in the present server implementation. There are a couple of ways to solve or work around the problem at hand: (1) Fix the CVS server to support multiple commands correctly, update the server, and change the client to use multiple commands. This will make our CVS client not work against older servers. It could be controlled by a configuration option, of course, or a cache of broken servers could be created by cvs (so the user only get one failure.) (2) Make the client look in the OLD CVSROOT (as specified by CVS/Root) when doing a remote commit where there is no CVS/Template, and the old CVS/Root points at a local repository. (3) Make the client look in the OLD CVSROOT (as specified by CVS/Root) when doing a remote commit, no matter if there is a CVS/Template, as long as the old CVS/Root points at a local repository. (4) Make the CVS client create CVS/Template even when checking out locally. (5) Make the CVS client create CVS/Template even when checking out locally, and update it on 'cvs update' if it is out of date. (6) Manually update CVS/Template locally by doing a find [srcdir] -type -d -name CVS \ -exec ln -fs ${CVSROOT}/CVSROOT/rcstemplate \{\}/Template \; This will let you use the template in your local CVS repository, kept up to date with cvsup. My personal opinion is that the best workaround for this problem would probably be (5), implemented using hardlinks between various CVS directories to minimize the space/time impact. This also avoids the problem of CVS slowdown for checking out the template during commit. Eivind. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message