From: Sven Verdoolaege Date: Sun, 3 Jul 2005 11:02:06 +0000 (+0200) Subject: Support :ext: access method. X-Git-Tag: v0.99~71^2^2~3 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=34155390a576d8124e0adc864aaf2f11bbf5168b;p=git.git Support :ext: access method. --- diff --git a/Documentation/git-cvsimport-script.txt b/Documentation/git-cvsimport-script.txt index 23a79059..4eb0f432 100644 --- a/Documentation/git-cvsimport-script.txt +++ b/Documentation/git-cvsimport-script.txt @@ -26,7 +26,8 @@ OPTIONS ------- -d :: The root of the CVS archive. May be local (a simple path) or remote; - currently, only the :pserver: access method is supported. + currently, only the :local:, :ext: and :pserver: access methods + are supported. -o :: The 'HEAD' branch from CVS is imported to the 'origin' branch within diff --git a/git-cvsimport-script b/git-cvsimport-script index c514d14c..cdd49636 100755 --- a/git-cvsimport-script +++ b/git-cvsimport-script @@ -143,13 +143,32 @@ sub conn { } $self->{'socketo'} = $s; $self->{'socketi'} = $s; - } else { # local: Fork off our own cvs server. + } else { # local or ext: Fork off our own cvs server. my $pr = IO::Pipe->new(); my $pw = IO::Pipe->new(); my $pid = fork(); die "Fork: $!\n" unless defined $pid; my $cvs = 'cvs'; $cvs = $ENV{CVS_SERVER} if exists $ENV{CVS_SERVER}; + my $rsh = 'rsh'; + $rsh = $ENV{CVS_RSH} if exists $ENV{CVS_RSH}; + + my @cvs = ($cvs, 'server'); + my ($local, $user, $host); + $local = $repo =~ s/:local://; + if (!$local) { + $repo =~ s/:ext://; + $local = !($repo =~ s/^(?:([^\@:]+)\@)?([^:]+)://); + ($user, $host) = ($1, $2); + } + if (!$local) { + if ($user) { + unshift @cvs, $rsh, '-l', $user, $host; + } else { + unshift @cvs, $rsh, $host; + } + } + unless($pid) { $pr->writer(); $pw->reader(); @@ -157,7 +176,7 @@ sub conn { dup2($pr->fileno(),1); $pr->close(); $pw->close(); - exec($cvs,"server"); + exec(@cvs); } $pw->writer(); $pr->reader();