Date: Fri, 10 Aug 2001 13:31:32 +0100 From: Josef Karthauser <joe@tao.org.uk> To: Eivind Eklund <eivind@FreeBSD.org> Cc: Matt Dillon <dillon@earth.backplane.com>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: Remote CVS/Template Message-ID: <20010810133132.G624@tao.org.uk> In-Reply-To: <20010715143503.A10888@FreeBSD.org>; from eivind@FreeBSD.org on Sun, Jul 15, 2001 at 02:35:03PM %2B0200 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>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
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. :)
> >
> > 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.
[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
[-- Attachment #2 --]
-----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-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010810133132.G624>
