Re: git diff -U0 header off-by-one error when deleting no lines
- From
- Lukas Tenbrink <lukastenbrink@gmail.com>
- Date
- May 3, 2023, 21:26 UTC
- Message-ID
- <7F1955DC-0296-470F-96F7-7BB96860D4BD@gmail.com>
- In-Reply-To
- <xmqqednxp0ys.fsf@gitster.g>
Show 40 quoted lines
> This might be unintuitive, but it is specified by POSIX. > > Open > > https://pubs.opengroup.org/onlinepubs/9699919799/ > > and look for "@@". > > "@@-%s+%s@@", <file1 range>, <file2 range> > > Each <range> field shall be of the form: > > "%1d", <beginning line number> > > or: > > "%1d,1", <beginning line number> > > if the range contains exactly one line, and: > > "%1d,%1d", <beginning line number>, <number of lines> > > 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