This commit is contained in:
Sven Verdoolaege 2005-07-03 13:02:06 +02:00
Родитель 8d0ea31175
Коммит 34155390a5
2 изменённых файлов: 23 добавлений и 3 удалений

Просмотреть файл

@ -26,7 +26,8 @@ OPTIONS
-------
-d <CVSROOT>::
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 <branch-for-HEAD>::
The 'HEAD' branch from CVS is imported to the 'origin' branch within

Просмотреть файл

@ -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();