git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Document change in format of raw diff output format

From
Jeff King <peff@peff.net>
Date
Nov 22, 2018, 16:01 UTC
Message-ID
<20181122160154.GA28192@sigill.intra.peff.net>
In-Reply-To
<20181122105836.GA36193@retiro.local>
On Thu, Nov 22, 2018 at 11:58:36AM +0100, Greg Hurrell wrote:
Show 14 quoted lines
> I was troubleshooting some breakage in some code that consumes the
> output of `git log --raw` and looking on two machines with different
> versions of Git just now I discovered the output format has changed
> somewhere between v2.14.5:
> 
> :000000 100644 000000000... 9773b7718... A      content/snippets/1157.md
> 
> and v2.19.0:
> 
> :000000 100644 000000000 9773b7718 A    content/snippets/1157.md
> 
> A quick search turns up some patches related to the
> GIT_PRINT_SHA1_ELLIPSIS env variable, which can be used to force the
> old output format, and which landed in v2.16.0, I think.

Yes. The actual commit that flipped the default is 7cb6ac1e4b (diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value, 2017-12-03). There's more discussion of the possibility of breakage in this subthread:

  https://public-inbox.org/git/83D263E58ABD46188756D41FE311E469@PhilipOakley/
> Does it sound right that we should update the documentation in
> diff-format.txt to show what the new output format is? The examples
> all show the old output format, which isn't produced by default any
> more.

Yes, we should definitely update the documentation to show the modern format. I think that was just an oversight in the original series.

Show 21 quoted lines
> diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt
> index 706916c94c..33776459d0 100644
> --- a/Documentation/diff-format.txt
> +++ b/Documentation/diff-format.txt
> @@ -26,12 +26,12 @@ line per changed file.
>  An output line is formatted this way:
> 
>  ------------------------------------------------
> -in-place edit  :100644 100644 bcd1234... 0123456... M file0
> -copy-edit      :100644 100644 abcd123... 1234567... C68 file1 file2
> -rename-edit    :100644 100644 abcd123... 1234567... R86 file1 file3
> -create         :000000 100644 0000000... 1234567... A file4
> -delete         :100644 000000 1234567... 0000000... D file5
> -unmerged       :000000 000000 0000000... 0000000... U file6
> +in-place edit  :100644 100644 bcd123456 012345678 M file0
> +copy-edit      :100644 100644 abcd12345 123456789 C68 file1 file2
> +rename-edit    :100644 100644 abcd12345 123456789 R86 file1 file3
> +create         :000000 100644 000000000 123456789 A file4
> +delete         :100644 000000 123456789 000000000 D file5
> +unmerged       :000000 000000 000000000 000000000 U file6
>  ------------------------------------------------
Yeah, this looks like an improvement.

I think in general that we'd continue to show 7 characters now, just without the extra dots (though it's auto-scaled based on the number of objects in the repo these days, so it's not even really a constant).

Show 8 quoted lines
>  That is, from the left to the right:
> @@ -75,7 +75,7 @@ and it is out of sync with the index.
>  Example:
> 
>  ------------------------------------------------
> -:100644 100644 5be4a4...... 000000...... M file.c
> +:100644 100644 5be4a4abc 000000000 M file.c
>  ------------------------------------------------

I'm not even sure what this original was trying to show. I don't think we ever produced that any dots. :)

Thanks for noticing.
-Peff
PS As you noticed, "git log" we don't promise that git-log output will
   never change between versions. For machine-consumption you probably
   want to use plumbing like "git rev-list | git diff-tree --stdin",
   which produces unabbreviated hashes.
Previous: Greg HurrellNext: Greg Hurrell
Message 2 of 7 in “Document change in format of raw diff output format”
  1. Greg HurrellNov 22, 2018
  2. Jeff KingNov 22, 2018
  3. Greg HurrellNov 23, 2018
  4. doc: update diff-format.txt for removed ellipsesGreg Hurrell, Nov 23, 2018
  5. Junio C HamanoNov 24, 2018
  6. doc: update diff-format.txt for removed ellipses in --rawGreg Hurrell, Nov 24, 2018
  7. Junio C HamanoNov 26, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.