diff options
-rw-r--r-- | Documentation/git-add.txt | 1 | ||||
-rwxr-xr-x | git-add--interactive.perl | 20 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt index ce71838b9e..709e04b335 100644 --- a/Documentation/git-add.txt +++ b/Documentation/git-add.txt @@ -245,6 +245,7 @@ patch:: y - stage this hunk n - do not stage this hunk + q - quite, do not stage this hunk nor any of the remaining ones a - stage this and all the remaining hunks in the file d - do not stage this hunk nor any of the remaining hunks in the file j - leave this hunk undecided, see next undecided hunk diff --git a/git-add--interactive.perl b/git-add--interactive.perl index 064d4c68d0..4fbd033215 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -890,6 +890,7 @@ sub help_patch_cmd { print colored $help_color, <<\EOF ; y - stage this hunk n - do not stage this hunk +q - quit, do not stage this hunk nor any of the remaining ones a - stage this and all the remaining hunks in the file d - do not stage this hunk nor any of the remaining hunks in the file g - select a hunk to go to @@ -926,7 +927,7 @@ sub patch_update_cmd { @mods); } for (@them) { - patch_update_file($_->{VALUE}); + return 0 if patch_update_file($_->{VALUE}); } } @@ -972,6 +973,7 @@ sub display_hunks { } sub patch_update_file { + my $quit = 0; my ($ix, $num); my $path = shift; my ($head, @hunk) = parse_diff($path); @@ -1002,6 +1004,11 @@ sub patch_update_file { $_->{USE} = 0 foreach ($mode, @hunk); last; } + elsif ($line =~ /^q/i) { + $_->{USE} = 0 foreach ($mode, @hunk); + $quit = 1; + last; + } else { help_patch_cmd(''); next; @@ -1109,6 +1116,16 @@ sub patch_update_file { } next; } + elsif ($line =~ /^q/i) { + while ($ix < $num) { + if (!defined $hunk[$ix]{USE}) { + $hunk[$ix]{USE} = 0; + } + $ix++; + } + $quit = 1; + next; + } elsif ($line =~ m|^/(.*)|) { my $regex = $1; if ($1 eq "") { @@ -1235,6 +1252,7 @@ sub patch_update_file { } print "\n"; + return $quit; } sub diff_cmd { |