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

"git diff" surprising default output

From
Sergey Organov <sorganov@gmail.com>
Date
Mar 1, 2023, 18:25 UTC
Message-ID
<871qm849co.fsf@osv.gnss.ru>
Hello,

By default, 'git diff' produces an output that is often rather surprising and difficult to grok, here is a simple example:

$ git diff --no-index -- f0.txt f1.txt
diff --git a/f0.txt b/f1.txt
index 3af00a929..35478f7bd 100644
--- a/f0.txt
+++ b/f1.txt
@@ -3,9 +3,6 @@
 #endif
 #if CANOPEN > 0
     IMD_CANOPEN,
-#endif
-#if MDL_LASER > 0
-    IMD_LASER,
 #endif
     IMD_AUTO,
     IMD_NONE,

I figured the offender is --indent-heuristic that is described in the
manual as:

      Enable the heuristic that shifts diff hunk boundaries to make
      patches easier to read. This is the default.

but apparently rather makes patches harder to read, at least at some
conditions. Turning it off helps to get the expected result:

$ git diff --no-index --no-indent-heuristic -- f0.txt f1.txt
diff --git a/f0.txt b/f1.txt
index 3af00a929..35478f7bd 100644
--- a/f0.txt
+++ b/f1.txt
@@ -4,9 +4,6 @@
 #if CANOPEN > 0
     IMD_CANOPEN,
 #endif
-#if MDL_LASER > 0
-    IMD_LASER,
-#endif
     IMD_AUTO,
     IMD_NONE,
     IMD_COUNT


Changing --diff-algorithm doesn't change the outcome.

So the questions are:

- Is there an example of an advantage the option has?

- Is it possible to flip the default?

Thanks,
-- Sergey Organov
Next: Junio C Hamano
Message 1 of 3 in “"git diff" surprising default output”
  1. Sergey OrganovMar 1, 2023
  2. Junio C HamanoMar 1, 2023
  3. Sergey OrganovMar 1, 2023

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.