Add map_user() and clear_mailmap() to mailmap
[gitweb.git] / git-add--interactive.perl
index 64ad28998e55f189cfa079db232bbf7ef12d93ba..3bf0cda4eef6714b09df0360d48c12796598071a 100755 (executable)
@@ -948,7 +948,7 @@ sub patch_update_file {
                        $other .= ',J';
                }
                if ($num > 1) {
-                       $other .= '/g';
+                       $other .= ',g';
                }
                for ($i = 0; $i < $num; $i++) {
                        if (!defined $hunk[$i]{USE}) {
@@ -994,6 +994,9 @@ sub patch_update_file {
                                        }
                                        print "go to which hunk$extra? ";
                                        $response = <STDIN>;
+                                       if (!defined $response) {
+                                               $response = '';
+                                       }
                                        chomp $response;
                                }
                                if ($response !~ /^\s*\d+\s*$/) {
@@ -1039,29 +1042,42 @@ sub patch_update_file {
                                $ix = $iy;
                                next;
                        }
-                       elsif ($other =~ /K/ && $line =~ /^K/) {
-                               $ix--;
+                       elsif ($line =~ /^K/) {
+                               if ($other =~ /K/) {
+                                       $ix--;
+                               }
+                               else {
+                                       print STDERR "No previous hunk\n";
+                               }
                                next;
                        }
-                       elsif ($other =~ /J/ && $line =~ /^J/) {
-                               $ix++;
+                       elsif ($line =~ /^J/) {
+                               if ($other =~ /J/) {
+                                       $ix++;
+                               }
+                               else {
+                                       print STDERR "No next hunk\n";
+                               }
                                next;
                        }
-                       elsif ($other =~ /k/ && $line =~ /^k/) {
-                               while (1) {
-                                       $ix--;
-                                       last if (!$ix ||
-                                                !defined $hunk[$ix]{USE});
+                       elsif ($line =~ /^k/) {
+                               if ($other =~ /k/) {
+                                       while (1) {
+                                               $ix--;
+                                               last if (!$ix ||
+                                                        !defined $hunk[$ix]{USE});
+                                       }
+                               }
+                               else {
+                                       print STDERR "No previous hunk\n";
                                }
                                next;
                        }
-                       elsif ($other =~ /j/ && $line =~ /^j/) {
-                               while (1) {
-                                       $ix++;
-                                       last if ($ix >= $num ||
-                                                !defined $hunk[$ix]{USE});
+                       elsif ($line =~ /^j/) {
+                               if ($other !~ /j/) {
+                                       print STDERR "No next hunk\n";
+                                       next;
                                }
-                               next;
                        }
                        elsif ($other =~ /s/ && $line =~ /^s/) {
                                my @split = split_hunk($hunk[$ix]{TEXT}, $hunk[$ix]{DISPLAY});