Merge branch 'jc/perl'
authorJunio C Hamano <junkio@cox.net>
Wed, 22 Feb 2006 06:51:21 +0000 (22:51 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 22 Feb 2006 06:51:21 +0000 (22:51 -0800)
* jc/perl:
  cvsimport: avoid open "-|" list form for Perl 5.6
  svnimport: avoid open "-|" list form for Perl 5.6
  send-email: avoid open "-|" list form for Perl 5.6
  rerere: avoid open "-|" list form for Perl 5.6
  fmt-merge-msg: avoid open "-|" list form for Perl 5.6

git-cvsimport.perl
git-fmt-merge-msg.perl
git-rerere.perl
git-send-email.perl
git-svnimport.perl

index 24f9834..b46469a 100755 (executable)
@@ -846,8 +846,12 @@ while(<CVS>) {
                        print "Drop $fn\n" if $opt_v;
                } else {
                        print "".($init ? "New" : "Update")." $fn: $size bytes\n" if $opt_v;
-                       open my $F, '-|', "git-hash-object -w $tmpname"
+                       my $pid = open(my $F, '-|');
+                       die $! unless defined $pid;
+                       if (!$pid) {
+                           exec("git-hash-object", "-w", $tmpname)
                                or die "Cannot create object: $!\n";
+                       }
                        my $sha = <$F>;
                        chomp $sha;
                        close $F;
index 3de67d7..c13af48 100755 (executable)
@@ -28,11 +28,12 @@ sub andjoin {
 }
 
 sub repoconfig {
-       my $fh;
        my $val;
        eval {
-               open $fh, '-|', 'git-repo-config', '--get', 'merge.summary'
-                   or die "$!";
+               my $pid = open(my $fh, '-|');
+               if (!$pid) {
+                       exec('git-repo-config', '--get', 'merge.summary');
+               }
                ($val) = <$fh>;
                close $fh;
        };
@@ -41,25 +42,32 @@ sub repoconfig {
 
 sub current_branch {
        my $fh;
-       open $fh, '-|', 'git-symbolic-ref', 'HEAD' or die "$!";
+       my $pid = open($fh, '-|');
+       die "$!" unless defined $pid;
+       if (!$pid) {
+           exec('git-symbolic-ref', 'HEAD') or die "$!";
+       }
        my ($bra) = <$fh>;
        chomp($bra);
+       close $fh or die "$!";
        $bra =~ s|^refs/heads/||;
        if ($bra ne 'master') {
                $bra = " into $bra";
        } else {
                $bra = "";
        }
-
        return $bra;
 }
 
 sub shortlog {
        my ($tip) = @_;
        my ($fh, @result);
-       open $fh, '-|', ('git-log', '--topo-order',
-                        '--pretty=oneline', $tip, '^HEAD')
-           or die "$!";
+       my $pid = open($fh, '-|');
+       die "$!" unless defined $pid;
+       if (!$pid) {
+           exec('git-log', '--topo-order',
+                '--pretty=oneline', $tip, '^HEAD') or die "$!";
+       }
        while (<$fh>) {
                s/^[0-9a-f]{40}\s+//;
                push @result, $_;
index df11951..d3664ff 100755 (executable)
@@ -131,7 +131,11 @@ sub record_preimage {
 sub find_conflict {
        my $in;
        local $/ = "\0";
-       open $in, '-|', qw(git ls-files -z -u) or die "$!: ls-files";
+       my $pid = open($in, '-|');
+       die "$!" unless defined $pid;
+       if (!$pid) {
+               exec(qw(git ls-files -z -u)) or die "$!: ls-files";
+       }
        my %path = ();
        my @path = ();
        while (<$in>) {
index 13b85dd..b0d095b 100755 (executable)
@@ -59,24 +59,29 @@ my $rc = GetOptions("from=s" => \$from,
 
 # Now, let's fill any that aren't set in with defaults:
 
-open(GITVAR,"-|","git-var","-l")
-       or die "Failed to open pipe from git-var: $!";
-
-my ($author,$committer);
-while(<GITVAR>) {
-       chomp;
-       my ($var,$data) = split /=/,$_,2;
-       my @fields = split /\s+/, $data;
-
-       my $ident = join(" ", @fields[0...(@fields-3)]);
+sub gitvar {
+    my ($var) = @_;
+    my $fh;
+    my $pid = open($fh, '-|');
+    die "$!" unless defined $pid;
+    if (!$pid) {
+       exec('git-var', $var) or die "$!";
+    }
+    my ($val) = <$fh>;
+    close $fh or die "$!";
+    chomp($val);
+    return $val;
+}
 
-       if ($var eq 'GIT_AUTHOR_IDENT') {
-               $author = $ident;
-       } elsif ($var eq 'GIT_COMMITTER_IDENT') {
-               $committer = $ident;
-       }
+sub gitvar_ident {
+    my ($name) = @_;
+    my $val = gitvar($name);
+    my @field = split(/\s+/, $val);
+    return join(' ', @field[0...(@field-3)]);
 }
-close(GITVAR);
+
+my ($author) = gitvar_ident('GIT_AUTHOR_IDENT');
+my ($committer) = gitvar_ident('GIT_COMMITTER_IDENT');
 
 my $prompting = 0;
 if (!defined $from) {
index c536d70..ee2940f 100755 (executable)
@@ -10,7 +10,6 @@
 # The head revision is on branch "origin" by default.
 # You can change that with the '-o' option.
 
-require 5.008; # for shell-safe open("-|",LIST)
 use strict;
 use warnings;
 use Getopt::Std;
@@ -322,8 +321,12 @@ sub get_file($$$) {
                return undef unless defined $name;
        }
 
-       open my $F, '-|', "git-hash-object", "-w", $name
+       my $pid = open(my $F, '-|');
+       die $! unless defined $pid;
+       if (!$pid) {
+           exec("git-hash-object", "-w", $name)
                or die "Cannot create object: $!\n";
+       }
        my $sha = <$F>;
        chomp $sha;
        close $F;
@@ -398,7 +401,12 @@ sub copy_path($$$$$$$$) {
                        $srcpath =~ s#/*$#/#;
        }
        
-       open my $f,"-|","git-ls-tree","-r","-z",$gitrev,$srcpath;
+       my $pid = open my $f,'-|';
+       die $! unless defined $pid;
+       if (!$pid) {
+               exec("git-ls-tree","-r","-z",$gitrev,$srcpath)
+                       or die $!;
+       }
        local $/ = "\0";
        while(<$f>) {
                chomp;
@@ -554,7 +562,11 @@ sub commit {
                                @o1 = @old;
                                @old = ();
                        }
-                       open my $F, "-|", "git-ls-files", "-z", @o1 or die $!;
+                       my $pid = open my $F, "-|";
+                       die "$!" unless defined $pid;
+                       if (!$pid) {
+                               exec("git-ls-files", "-z", @o1) or die $!;
+                       }
                        @o1 = ();
                        local $/ = "\0";
                        while(<$F>) {