Skip site navigation (1)Skip section navigation (2)
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

--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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010810133132.G624>