]> git.ipfire.org Git - thirdparty/git.git/commitdiff
add -p (built-in): imitate `xdl_format_hunk_hdr()` generating hunk headers
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 11 Nov 2020 12:28:16 +0000 (12:28 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 11 Nov 2020 17:07:52 +0000 (09:07 -0800)
In libxdiff, imitating GNU diff, the hunk headers only show the line
count if it is different from 1. When splitting hunks, the Perl version
of `git add -p` already imitates this. Let's do the same in the built-in
version of said command.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
add-patch.c

index bd94bd3a7c9e86f4af6d9b887c824ff5be2db9a5..55bd9d4f3758b8f710e1bc1c2a172d13aa7eafe3 100644 (file)
@@ -661,9 +661,14 @@ static void render_hunk(struct add_p_state *s, struct hunk *hunk,
                else
                        new_offset += delta;
 
-               strbuf_addf(out, "@@ -%lu,%lu +%lu,%lu @@",
-                           old_offset, header->old_count,
-                           new_offset, header->new_count);
+               strbuf_addf(out, "@@ -%lu", old_offset);
+               if (header->old_count != 1)
+                       strbuf_addf(out, ",%lu", header->old_count);
+               strbuf_addf(out, " +%lu", new_offset);
+               if (header->new_count != 1)
+                       strbuf_addf(out, ",%lu", header->new_count);
+               strbuf_addstr(out, " @@");
+
                if (len)
                        strbuf_add(out, p, len);
                else if (colored)