Merge branch 'jk/add-p-commentchar-fix'
authorJunio C Hamano <gitster@pobox.com>
Mon, 26 Jun 2017 21:09:31 +0000 (14:09 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 26 Jun 2017 21:09:31 +0000 (14:09 -0700)
"git add -p" were updated in 2.12 timeframe to cope with custom
core.commentchar but the implementation was buggy and a
metacharacter like $ and * did not work.

* jk/add-p-commentchar-fix:
add--interactive: quote commentChar regex
add--interactive: handle EOF in prompt_yesno

git-add--interactive.perl
t/t3701-add-interactive.sh
index 79d675b5b02ee73a025f86acc6cc29e530ee8db6..0e8543c8652f2ec55dd9bc33d7d0a485d33aa9c7 100755 (executable)
@@ -1081,7 +1081,7 @@ sub edit_hunk_manually {
 
        open $fh, '<', $hunkfile
                or die sprintf(__("failed to open hunk edit file for reading: %s"), $!);
-       my @newtext = grep { !/^$comment_line_char/ } <$fh>;
+       my @newtext = grep { !/^\Q$comment_line_char\E/ } <$fh>;
        close $fh;
        unlink $hunkfile;
 
@@ -1136,6 +1136,7 @@ sub prompt_yesno {
        while (1) {
                print colored $prompt_color, $prompt;
                my $line = prompt_single_character;
+               return undef unless defined $line;
                return 0 if $line =~ /^n/i;
                return 1 if $line =~ /^y/i;
        }
index 2ecb43a61652032862d5a264ede8af473ef345e1..2f3e7cea64e897299d87196135032de22050354b 100755 (executable)
@@ -477,4 +477,12 @@ test_expect_success 'add -p does not expand argument lists' '
        ! grep not-changed trace.out
 '
 
+test_expect_success 'hunk-editing handles custom comment char' '
+       git reset --hard &&
+       echo change >>file &&
+       test_config core.commentChar "\$" &&
+       echo e | GIT_EDITOR=true git add -p &&
+       git diff --exit-code
+'
+
 test_done