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

Re: Question: xdiff and "pretty" (human readable) diff output

From
Stefan Beller <sbeller@google.com>
Date
Mar 22, 2017, 19:43 UTC
Message-ID
<CAGZ79kZ+BGG6yj_rEvjDNf3gmV5KPgvOvLfH94VdPudzbGCkyA@mail.gmail.com>
In-Reply-To
<20170322192340.elg2gpvcshhk3jq3@darkstar>
On Wed, Mar 22, 2017 at 12:23 PM,  <matthew@giassa.net> wrote:
Show 6 quoted lines
> Good day,
>
> I have a question with respect to how git generates "pretty" (ie: human
> readable) unified diffs. It's to my understanding that git uses its own
> (simplified/minimized) fork of libxdiff, simply referred to as "xdiff"
> [1].
correct.
> Which tool/library is used to take the xdiff output and generate
> the human-readable equivalent that is rendered to the console?
Git itself. Have a look at diff.c (it's only 5k lines of code ;)

Maybe start with fn_out_consume which is a callback (for xdiff) that is responsible for pretty printing the output, i.e. transforming the output of xdiff according to Gits configuration.

Show 5 quoted lines
> I have a
> program that I'm maintaining that currently tracks changes to a couple
> of "sandboxed" files, and I wanted to add a simple console UI that
> periodically shows the changes to the files over time and/or dumps the
> "pretty diff" to syslog.
> over time
So you could use cron for that?
>  "pretty diff" to syslog.

So you want to modify the "pretty diff"? Maybe that can be archived by a custom format (see the git *log* man page) and doesn't require hacking.

Thanks, Stefan

Previous: matthew@giassa.netNext: matthew@giassa.net
Message 2 of 3 in “Question: xdiff and "pretty" (human readable) diff output”
  1. matthew@giassa.netMar 22, 2017
  2. Stefan BellerMar 22, 2017
  3. matthew@giassa.netMar 22, 2017

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.