From owner-cvs-all Sat Aug 11 8:16:16 2001 Delivered-To: cvs-all@freebsd.org Received: from tao.org.uk (xwing.creative.net.au [203.56.168.36]) by hub.freebsd.org (Postfix) with ESMTP id 2163337B407; Sat, 11 Aug 2001 08:16:05 -0700 (PDT) (envelope-from joe@tao.org.uk) Received: by tao.org.uk (Postfix, from userid 100) id B7AE4579; Fri, 10 Aug 2001 13:31:32 +0100 (BST) Date: Fri, 10 Aug 2001 13:31:32 +0100 From: Josef Karthauser To: Eivind Eklund Cc: Matt Dillon , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: Remote CVS/Template Message-ID: <20010810133132.G624@tao.org.uk> 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> <20010715143503.A10888@FreeBSD.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-md5; protocol="application/pgp-signature"; boundary="HSQ3hISbU3Um6hch" Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20010715143503.A10888@FreeBSD.org>; from eivind@FreeBSD.org on Sun, Jul 15, 2001 at 02:35:03PM +0200 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 --HSQ3hISbU3Um6hch Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Jul 15, 2001 at 02:35:03PM +0200, Eivind Eklund wrote: > 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. :) > >=20 > > 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 rcste= mplate > > sitting on freefall when it brings up the editor session. Anybody = know? >=20 > Short answer: You can't without changing CVS. >=20 > 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. >=20 > When the CVS client does a remote checkout, it creates CVS/Template for u= se > 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 sing= le > command to the server, followed by getting responses from the server. >=20 > In order to change this, we'd need to do several commands in order to fet= ch > the template and commit during a single remote operation (ie, without hav= ing > the user authenticate several times.) This does, according to the protocol > documentation, probably not work correctly in the present server > implementation. >=20 > 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 ma= ke 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.) >=20 > (2) Make the client look in the OLD CVSROOT (as specified by CVS/Root) wh= en > doing a remote commit where there is no CVS/Template, and the old CVS= /Root > points at a local repository. >=20 > (3) Make the client look in the OLD CVSROOT (as specified by CVS/Root) wh= en > doing a remote commit, no matter if there is a CVS/Template, as long = as > the old CVS/Root points at a local repository. >=20 > (4) Make the CVS client create CVS/Template even when checking out locall= y. >=20 > (5) Make the CVS client create CVS/Template even when checking out locall= y, > and update it on 'cvs update' if it is out of date. >=20 > (6) Manually update CVS/Template locally by doing a > find [srcdir] -type -d -name CVS \=20 > -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. >=20 >=20 > My personal opinion is that the best workaround for this problem would > probably be (5), implemented using hardlinks between various CVS director= ies > to minimize the space/time impact. This also avoids the problem of CVS > slowdown for checking out the template during commit. [Whole message included for context.] It's a bit more complicated than that though isn't it? The Template file doesn't exist locally as such. There's a mechanism in that selects the correct template to use depending upon in which directory the change is being made. The CVSROOT/rcsinfo file contains regular expressions and the name of the file to be used as the Template. In our case we've got a single entry: ALL $CVSROOT/CVSROOT/rcstemplate This means that rcstemplate gets used universally as the Template within our repository, but in general this isn't the case. Can you think of a work around for this too? Joe --HSQ3hISbU3Um6hch Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (FreeBSD) Comment: For info see http://www.gnupg.org iEYEARECAAYFAjtz1CMACgkQXVIcjOaxUBZgPQCgr/MCgA7UnDDkWV3+0DRYYaQl jqIAoN3ZrfB2rvgAC2TVCauEVuDZAwEc =mcGx -----END PGP SIGNATURE----- --HSQ3hISbU3Um6hch-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message