cvsserver: move safe_pipe_capture() to the main package
As a preparation for replacing `command` with a call to this function from outside GITCVS::updater package, move it to the main package. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
4d4165b80d
commit
fce13af5d2
@ -3406,6 +3406,22 @@ sub refHashEqual
|
|||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# an alternative to `command` that allows input to be passed as an array
|
||||||
|
# to work around shell problems with weird characters in arguments
|
||||||
|
|
||||||
|
sub safe_pipe_capture {
|
||||||
|
|
||||||
|
my @output;
|
||||||
|
|
||||||
|
if (my $pid = open my $child, '-|') {
|
||||||
|
@output = (<$child>);
|
||||||
|
close $child or die join(' ',@_).": $! $?";
|
||||||
|
} else {
|
||||||
|
exec(@_) or die "$! $?"; # exec() can fail the executable can't be found
|
||||||
|
}
|
||||||
|
return wantarray ? @output : join('',@output);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
package GITCVS::log;
|
package GITCVS::log;
|
||||||
|
|
||||||
@ -3882,7 +3898,7 @@ sub update
|
|||||||
# several candidate merge bases. let's assume
|
# several candidate merge bases. let's assume
|
||||||
# that the first one is the best one.
|
# that the first one is the best one.
|
||||||
my $base = eval {
|
my $base = eval {
|
||||||
safe_pipe_capture('git', 'merge-base',
|
::safe_pipe_capture('git', 'merge-base',
|
||||||
$lastpicked, $parent);
|
$lastpicked, $parent);
|
||||||
};
|
};
|
||||||
# The two branches may not be related at all,
|
# The two branches may not be related at all,
|
||||||
@ -4749,7 +4765,7 @@ sub getMetaFromCommithash
|
|||||||
return $retVal;
|
return $retVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
my($fileHash)=safe_pipe_capture("git","rev-parse","$revCommit:$filename");
|
my($fileHash) = ::safe_pipe_capture("git","rev-parse","$revCommit:$filename");
|
||||||
chomp $fileHash;
|
chomp $fileHash;
|
||||||
if(!($fileHash=~/^[0-9a-f]{40}$/))
|
if(!($fileHash=~/^[0-9a-f]{40}$/))
|
||||||
{
|
{
|
||||||
@ -4844,8 +4860,8 @@ sub lookupCommitRef
|
|||||||
return $commitHash;
|
return $commitHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
$commitHash=safe_pipe_capture("git","rev-parse","--verify","--quiet",
|
$commitHash = ::safe_pipe_capture("git","rev-parse","--verify","--quiet",
|
||||||
$self->unescapeRefName($ref));
|
$self->unescapeRefName($ref));
|
||||||
$commitHash=~s/\s*$//;
|
$commitHash=~s/\s*$//;
|
||||||
if(!($commitHash=~/^[0-9a-f]{40}$/))
|
if(!($commitHash=~/^[0-9a-f]{40}$/))
|
||||||
{
|
{
|
||||||
@ -4854,7 +4870,7 @@ sub lookupCommitRef
|
|||||||
|
|
||||||
if( defined($commitHash) )
|
if( defined($commitHash) )
|
||||||
{
|
{
|
||||||
my $type=safe_pipe_capture("git","cat-file","-t",$commitHash);
|
my $type = ::safe_pipe_capture("git","cat-file","-t",$commitHash);
|
||||||
if( ! ($type=~/^commit\s*$/ ) )
|
if( ! ($type=~/^commit\s*$/ ) )
|
||||||
{
|
{
|
||||||
$commitHash=undef;
|
$commitHash=undef;
|
||||||
@ -4907,7 +4923,7 @@ sub commitmessage
|
|||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
my @lines = safe_pipe_capture("git", "cat-file", "commit", $commithash);
|
my @lines = ::safe_pipe_capture("git", "cat-file", "commit", $commithash);
|
||||||
shift @lines while ( $lines[0] =~ /\S/ );
|
shift @lines while ( $lines[0] =~ /\S/ );
|
||||||
$message = join("",@lines);
|
$message = join("",@lines);
|
||||||
$message .= " " if ( $message =~ /\n$/ );
|
$message .= " " if ( $message =~ /\n$/ );
|
||||||
@ -5056,25 +5072,6 @@ sub in_array
|
|||||||
return $retval;
|
return $retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
=head2 safe_pipe_capture
|
|
||||||
|
|
||||||
an alternative to `command` that allows input to be passed as an array
|
|
||||||
to work around shell problems with weird characters in arguments
|
|
||||||
|
|
||||||
=cut
|
|
||||||
sub safe_pipe_capture {
|
|
||||||
|
|
||||||
my @output;
|
|
||||||
|
|
||||||
if (my $pid = open my $child, '-|') {
|
|
||||||
@output = (<$child>);
|
|
||||||
close $child or die join(' ',@_).": $! $?";
|
|
||||||
} else {
|
|
||||||
exec(@_) or die "$! $?"; # exec() can fail the executable can't be found
|
|
||||||
}
|
|
||||||
return wantarray ? @output : join('',@output);
|
|
||||||
}
|
|
||||||
|
|
||||||
=head2 mangle_dirname
|
=head2 mangle_dirname
|
||||||
|
|
||||||
create a string from a directory name that is suitable to use as
|
create a string from a directory name that is suitable to use as
|
||||||
|
Loading…
x
Reference in New Issue
Block a user