diff options
author | Junio C Hamano <gitster@pobox.com> | 2022-02-10 01:20:59 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2022-02-10 01:20:59 +0300 |
commit | ec4f70e64711cbf550b2cfc1f78ccd9325d697b7 (patch) | |
tree | 2937902d96396b01645ce35497b2f9012c4d3373 /add-patch.c | |
parent | e704a4486ed715661423adabcb9d75c729059a41 (diff) | |
parent | 7008ddc645cf8a6783d23b4ccdae0b74b096bd9e (diff) |
Merge branch 'pw/add-p-hunk-split-fix'
"git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
* pw/add-p-hunk-split-fix:
builtin add -p: fix hunk splitting
t3701: clean up hunk splitting tests
Diffstat (limited to 'add-patch.c')
-rw-r--r-- | add-patch.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/add-patch.c b/add-patch.c index 573eef0cc4..55d719f784 100644 --- a/add-patch.c +++ b/add-patch.c @@ -383,6 +383,17 @@ static int is_octal(const char *p, size_t len) return 1; } +static void complete_file(char marker, struct hunk *hunk) +{ + if (marker == '-' || marker == '+') + /* + * Last hunk ended in non-context line (i.e. it + * appended lines to the file, so there are no + * trailing context lines). + */ + hunk->splittable_into++; +} + static int parse_diff(struct add_p_state *s, const struct pathspec *ps) { struct strvec args = STRVEC_INIT; @@ -472,6 +483,7 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps) eol = pend; if (starts_with(p, "diff ")) { + complete_file(marker, hunk); ALLOC_GROW_BY(s->file_diff, s->file_diff_nr, 1, file_diff_alloc); file_diff = s->file_diff + s->file_diff_nr - 1; @@ -598,13 +610,7 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps) file_diff->hunk->colored_end = hunk->colored_end; } } - - if (marker == '-' || marker == '+') - /* - * Last hunk ended in non-context line (i.e. it appended lines - * to the file, so there are no trailing context lines). - */ - hunk->splittable_into++; + complete_file(marker, hunk); /* non-colored shorter than colored? */ if (colored_p != colored_pend) { |