Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Jul 2001 14:35:03 +0200
From:      Eivind Eklund <eivind@FreeBSD.org>
To:        Matt Dillon <dillon@earth.backplane.com>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Remote CVS/Template
Message-ID:  <20010715143503.A10888@FreeBSD.org>
In-Reply-To: <200107132214.f6DMET571067@earth.backplane.com>; from dillon@earth.backplane.com on Fri, Jul 13, 2001 at 03:14:29PM -0700
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>

next in thread | previous in thread | raw e-mail | index | archive | help
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




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