summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-07-10 13:58:58 -0700
committerJunio C Hamano <gitster@pobox.com>2017-07-10 13:58:59 -0700
commitf904494574035f6ff2725b0e97951c55ccd9dee3 (patch)
tree4ce9cb8c57fb75f437d1a557d2dc94cac4d9692b
parent040746c061c1138222d7db1f9ace292ef1a0935d (diff)
parentd85d7ecb80ebc93f7380b4196c303756ee051668 (diff)
downloadgit-f904494574035f6ff2725b0e97951c55ccd9dee3.tar.gz
Merge branch 'jk/add-p-commentchar-fix' into maint
"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
-rwxr-xr-xgit-add--interactive.perl3
-rwxr-xr-xt/t3701-add-interactive.sh8
2 files changed, 10 insertions, 1 deletions
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 709a5f6ce6..c55c612455 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -1085,7 +1085,7 @@ EOF2
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;
@@ -1140,6 +1140,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;
}
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index 2ecb43a616..2f3e7cea64 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -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