git-svn: Don't rely on $_ after making a function call
Many functions and operators in perl set $_, so its value cannot be relied upon after calling arbitrary functions. The solution is simply to copy the value of $_ into a local variable that will not get overwritten. Signed-off-by: Adam Roben <aroben@apple.com> Acked-by: Eric Wong <normalperson@yhbt.net> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
c21aa54e19
commit
b03c7a63a0
10
git-svn.perl
10
git-svn.perl
|
@ -771,19 +771,19 @@ sub cmt_metadata {
|
||||||
sub working_head_info {
|
sub working_head_info {
|
||||||
my ($head, $refs) = @_;
|
my ($head, $refs) = @_;
|
||||||
my ($fh, $ctx) = command_output_pipe('rev-list', $head);
|
my ($fh, $ctx) = command_output_pipe('rev-list', $head);
|
||||||
while (<$fh>) {
|
while (my $hash = <$fh>) {
|
||||||
chomp;
|
chomp($hash);
|
||||||
my ($url, $rev, $uuid) = cmt_metadata($_);
|
my ($url, $rev, $uuid) = cmt_metadata($hash);
|
||||||
if (defined $url && defined $rev) {
|
if (defined $url && defined $rev) {
|
||||||
if (my $gs = Git::SVN->find_by_url($url)) {
|
if (my $gs = Git::SVN->find_by_url($url)) {
|
||||||
my $c = $gs->rev_db_get($rev);
|
my $c = $gs->rev_db_get($rev);
|
||||||
if ($c && $c eq $_) {
|
if ($c && $c eq $hash) {
|
||||||
close $fh; # break the pipe
|
close $fh; # break the pipe
|
||||||
return ($url, $rev, $uuid, $gs);
|
return ($url, $rev, $uuid, $gs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unshift @$refs, $_ if $refs;
|
unshift @$refs, $hash if $refs;
|
||||||
}
|
}
|
||||||
command_close_pipe($fh, $ctx);
|
command_close_pipe($fh, $ctx);
|
||||||
(undef, undef, undef, undef);
|
(undef, undef, undef, undef);
|
||||||
|
|
Loading…
Reference in New Issue