Merge branch 'pw/add-p-recount'

When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it).  The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.

* pw/add-p-recount:
  add -p: fix counting empty context lines in edited patches
This commit is contained in:
Junio C Hamano 2018-06-28 12:53:32 -07:00
commit 5eb8da8508
2 changed files with 44 additions and 1 deletions

View File

@ -1062,7 +1062,7 @@ sub recount_edited_hunk {
$o_cnt++;
} elsif ($mode eq '+') {
$n_cnt++;
} elsif ($mode eq ' ') {
} elsif ($mode eq ' ' or $mode eq "\n") {
$o_cnt++;
$n_cnt++;
}

View File

@ -175,6 +175,49 @@ test_expect_success 'real edit works' '
diff_cmp expected output
'
test_expect_success 'setup file' '
test_write_lines a "" b "" c >file &&
git add file &&
test_write_lines a "" d "" c >file
'
test_expect_success 'setup patch' '
SP=" " &&
NULL="" &&
cat >patch <<-EOF
@@ -1,4 +1,4 @@
a
$NULL
-b
+f
$SP
c
EOF
'
test_expect_success 'setup expected' '
cat >expected <<-EOF
diff --git a/file b/file
index b5dd6c9..f910ae9 100644
--- a/file
+++ b/file
@@ -1,5 +1,5 @@
a
$SP
-f
+d
$SP
c
EOF
'
test_expect_success 'edit can strip spaces from empty context lines' '
test_write_lines e n q | git add -p 2>error &&
test_must_be_empty error &&
git diff >output &&
diff_cmp expected output
'
test_expect_success 'skip files similarly as commit -a' '
git reset &&
echo file >.gitignore &&