revised^2: git-daemon extra paranoia, and path DWIM
[gitweb.git] / git-cvsimport.perl
index 565f4f1b32c8b9d96df3602ab2d729cf3529836a..bbb83fb71cab2d177e98a1c648974bb2bca4607a 100755 (executable)
@@ -487,7 +487,10 @@ ($$)
        my @opt;
        @opt = split(/,/,$opt_p) if defined $opt_p;
        unshift @opt, '-z', $opt_z if defined $opt_z;
-       exec("cvsps",@opt,"-u","-A","--cvs-direct",'--root',$opt_d,$cvs_tree);
+       unless (defined($opt_p) && $opt_p =~ m/--no-cvs-direct/) {
+               push @opt, '--cvs-direct';
+       }
+       exec("cvsps",@opt,"-u","-A",'--root',$opt_d,$cvs_tree);
        die "Could not start cvsps: $!\n";
 }
 
@@ -510,7 +513,7 @@ ($$)
 
 my $state = 0;
 
-my($patchset,$date,$author,$branch,$ancestor,$tag,$logmsg);
+my($patchset,$date,$author_name,$author_email,$branch,$ancestor,$tag,$logmsg);
 my(@old,@new);
 my $commit = sub {
        my $pid;
@@ -567,6 +570,7 @@ ($$)
        unless($pid) {
                $pr->writer();
                $pw->reader();
+               open(OUT,">&STDOUT");
                dup2($pw->fileno(),0);
                dup2($pr->fileno(),1);
                $pr->close();
@@ -584,18 +588,17 @@ ($$)
                                if ( -e "$git_dir/refs/heads/$mparent") {
                                        $mparent = get_headref($mparent, $git_dir);
                                        push @par, '-p', $mparent;
-                                       # printing here breaks import # 
-                                       # # print "Merge parent branch: $mparent\n" if $opt_v;
+                                       print OUT "Merge parent branch: $mparent\n" if $opt_v;
                                }
-                       } 
+                       }
                }
 
                exec("env",
-                       "GIT_AUTHOR_NAME=$author",
-                       "GIT_AUTHOR_EMAIL=$author",
+                       "GIT_AUTHOR_NAME=$author_name",
+                       "GIT_AUTHOR_EMAIL=$author_email",
                        "GIT_AUTHOR_DATE=".strftime("+0000 %Y-%m-%d %H:%M:%S",gmtime($date)),
-                       "GIT_COMMITTER_NAME=$author",
-                       "GIT_COMMITTER_EMAIL=$author",
+                       "GIT_COMMITTER_NAME=$author_name",
+                       "GIT_COMMITTER_EMAIL=$author_email",
                        "GIT_COMMITTER_DATE=".strftime("+0000 %Y-%m-%d %H:%M:%S",gmtime($date)),
                        "git-commit-tree", $tree,@par);
                die "Cannot exec git-commit-tree: $!\n";
@@ -638,7 +641,7 @@ ($$)
                print $out "object $cid\n".
                    "type commit\n".
                    "tag $xtag\n".
-                   "tagger $author <$author>\n"
+                   "tagger $author_name <$author_email>\n"
                    or die "Cannot create tag object $xtag: $!\n";
                close($out)
                    or die "Cannot create tag object $xtag: $!\n";
@@ -683,7 +686,11 @@ ($$)
                $state=3;
        } elsif($state == 3 and s/^Author:\s+//) {
                s/\s+$//;
-               $author = $_;
+               if (/^(.*?)\s+<(.*)>/) {
+                   ($author_name, $author_email) = ($1, $2);
+               } else {
+                   $author_name = $author_email = $_;
+               }
                $state = 4;
        } elsif($state == 4 and s/^Branch:\s+//) {
                s/\s+$//;