From: Lukas Tenbrink Date: Wed, 03 May 2023 21:26:17 GMT Subject: Re: git diff -U0 header off-by-one error when deleting no lines Message-ID: <7F1955DC-0296-470F-96F7-7BB96860D4BD@gmail.com> In-Reply-To: > This might be unintuitive, but it is specified by POSIX. > > Open > > https://pubs.opengroup.org/onlinepubs/9699919799/ > > and look for "@@". > > "@@-%s+%s@@", , > > Each field shall be of the form: > > "%1d", > > or: > > "%1d,1", > > if the range contains exactly one line, and: > > "%1d,%1d", , > > otherwise. > > If a range is empty, its beginning line number shall be the > number of the line just before the range, or 0 if the empty > range starts the file. > > So a patch that adds lines to an empty file would look like > > $ diff -U0 /dev/null test1 > --- /dev/null 2023-04-29 22:24:54.395999895 -0700 > +++ test1 2023-05-03 14:02:27.718960038 -0700 > @@ -0,0 +1,3 @@ > +A > +B > +C > > just as specified. Note "-0,0" that says "there was no line before > this hunk before this change". That is indeed fairly unintuitive, but I appreciate the detailed response. I shall adapt my scripts. Thanks and best wishes, Lukas