>>>> "Michael" == Michael Kifer
<kifer(a)cs.sunysb.edu> writes:
Michael> Steve Youngs writes:
Michael> Switching to pserver in the mule directory has helped
Michael> somewhat (at least, with downloading) However, this is very
Michael> inconvenient.
>
> Why is that? I use pserver for read-only CVS and ext for write CVS
> stuff with no problems at all.
Michael> Perhaps I don't know how to do it properly, but I have to edit CVS/Root
by
Michael> hand to replace :ext:michaelk@ to :pserver:xemacs@
Michael> Besides, I think cvs update only looks at CVS/Root in the top directory
Michael> where it is invoked. (Didn't check now, but I think I ran into it
before.)
Michael> So, if this is true, it means that updating the entire package tree might
Michael> be more complicated than usual.
Although the following is a bug workaround, it's also a good idea -
like not running as `root' by default.
Do your cvs checkouts using :pserver: . If you've done a checkout
using :ext:, you can change all your CVS/Root files using a script
(but just once).
Some versions of CVS update the CVS/Root files when you run cvs
commands with a different -d flag
`$CVS_IGNORE_REMOTE_ROOT'
For CVS 1.10 and older, setting this variable prevents CVS from
overwriting the `CVS/Root' file when the `-d' global option is
specified. Later versions of CVS do not rewrite `CVS/Root', so
`CVS_IGNORE_REMOTE_ROOT' has no effect.
I use the following `cvs-rw' script to run non-read-only CVS
commands. Identical to the `cvs' command otherwise.
Customize two lines below for your own use.
: #-*- Perl -*-
eval 'exec perl -w -S $0 ${1+"$@"}' # Portability kludge
if 0; # Author: Martin Buchholz
use strict;
(my $myName = $0) =~ s@.*/@@; my $usage="
Usage: $myName cvs-arg ...
Run cvs in r/w mode.
The idea is to do most CVS operations, especially checkout, in
read-only, or anonymous :pserver: mode, and only switch to ssh/:ext:
mode when performing write operations\n";
die $usage if !@ARGV || $ARGV[0] eq '-h';
die "Not a CVS repository\n" unless -r "CVS/Root";
open (ROOT, "< CVS/Root") or die "CVS/Root: $!";
chomp (my $root = <ROOT>);
# Make $root writable by switching from :pserver: to :ext:
# Modify the following two lines for your own CVS commits:
$root =~ s/:pserver:anonymous@(?=.*\bsourceforge\.net:)/:ext:mrb@/;
$root =~ s/:pserver:xemacs@(?=.*\bcvs\.xemacs\.org:)/:ext:martinb@/;
$ENV{CVS_RSH} = 'ssh';
$ENV{CVS_IGNORE_REMOTE_ROOT} = 'yes';
exec 'cvs', '-w', '-z3', '-d', $root, @ARGV
or die "Can't run cvs: $!\n";