Skip to content

Commit 22cb383

Browse files
dschogitster
authored andcommitted
apply --recount: allow "no-op hunks"
When editing patches e.g. in `git add -e`, it is quite common that a hunk ends up having no -/+ lines, i.e. it is now supposed to do nothing. This use case was broken by ad6e8ed (apply: reject a hunk that does not do anything, 2015-06-01) with the good intention of catching a very real, different issue in hand-edited patches. So let's use the `--recount` option as the tell-tale whether the user would actually be okay with no-op hunks. Add a test case to make sure that this use case does not regress again. Signed-off-by: Johannes Schindelin <[email protected]> Reviewed-by: Josh Steadmon <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent cae598d commit 22cb383

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

apply.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1747,7 +1747,7 @@ static int parse_fragment(struct apply_state *state,
17471747
}
17481748
if (oldlines || newlines)
17491749
return -1;
1750-
if (!deleted && !added)
1750+
if (!patch->recount && !deleted && !added)
17511751
return -1;
17521752

17531753
fragment->leading = leading;

t/t4136-apply-check.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ test_expect_success 'apply exits non-zero with no-op patch' '
2929
test_must_fail git apply --check input
3030
'
3131

32+
test_expect_success '`apply --recount` allows no-op patch' '
33+
echo 1 >1 &&
34+
git apply --recount --check <<-\EOF
35+
diff --get a/1 b/1
36+
index 6696ea4..606eddd 100644
37+
--- a/1
38+
+++ b/1
39+
@@ -1,1 +1,1 @@
40+
1
41+
EOF
42+
'
43+
3244
test_expect_success 'invalid combination: create and copy' '
3345
test_must_fail git apply --check - <<-\EOF
3446
diff --git a/1 b/2

0 commit comments

Comments
 (0)