From: Junio C Hamano Date: Fri, 6 May 2011 17:52:12 +0000 (-0700) Subject: Merge branch 'gr/cvsimport-alternative-cvspass-location' X-Git-Tag: v1.7.6-rc0~99 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/2da61dcf9e678f36f8287b2cacdec2ebf014ae69?ds=inline;hp=-c Merge branch 'gr/cvsimport-alternative-cvspass-location' * gr/cvsimport-alternative-cvspass-location: Look for password in both CVS and CVSNT password files. --- 2da61dcf9e678f36f8287b2cacdec2ebf014ae69 diff --combined git-cvsimport.perl index bbf327f3e8,5c012a35d2..8d41610bcf --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@@ -227,6 -227,31 +227,31 @@@ sub new return $self; } + sub find_password_entry { + my ($cvspass, @cvsroot) = @_; + my ($file, $delim) = @$cvspass; + my $pass; + local ($_); + + if (open(my $fh, $file)) { + # :pserver:cvs@mea.tmt.tele.fi:/cvsroot/zmailer Ah) { + chomp; + s/^\/\d+\s+//; + my ($w, $p) = split($delim,$_,2); + for my $cvsroot (@cvsroot) { + if ($w eq $cvsroot) { + $pass = $p; + last CVSPASSFILE; + } + } + } + close($fh); + } + return $pass; + } + sub conn { my $self = shift; my $repo = $self->{'fullrep'}; @@@ -259,19 -284,23 +284,23 @@@ if ($pass) { $pass = $self->_scramble($pass); } else { - open(H,$ENV{'HOME'}."/.cvspass") and do { - # :pserver:cvs@mea.tmt.tele.fi:/cvsroot/zmailer Ah) { - chomp; - s/^\/\d+\s+//; - my ($w,$p) = split(/\s/,$_,2); - if ($w eq $rr or $w eq $rr2) { - $pass = $p; - last; - } + my @cvspass = ([$ENV{'HOME'}."/.cvspass", qr/\s/], + [$ENV{'HOME'}."/.cvs/cvspass", qr/=/]); + my @loc = (); + foreach my $cvspass (@cvspass) { + my $p = find_password_entry($cvspass, $rr, $rr2); + if ($p) { + push @loc, $cvspass->[0]; + $pass = $p; } - }; - $pass = "A" unless $pass; + } + + if (1 < @loc) { + die("Multiple cvs password files have ". + "entries for CVSROOT $opt_d: @loc"); + } elsif (!$pass) { + $pass = "A"; + } } my ($s, $rep); @@@ -366,9 -395,7 +395,9 @@@ $self->{'socketo'}->write("valid-requests\n"); $self->{'socketo'}->flush(); - chomp(my $rep=$self->readline()); + my $rep=$self->readline(); + die "Failed to read from server" unless defined $rep; + chomp($rep); if ($rep !~ s/^Valid-requests\s*//) { $rep="" unless $rep; die "Expected Valid-requests from server, but got: $rep\n";