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

Counter-intuitive result from diff -C --stat

From
Mike Hommey <mh@glandium.org>
Date
Dec 28, 2016, 08:09 UTC
Message-ID
<20161228080916.72id4hzqxfbygtth@glandium.org>
Hi,

So I was checking out differences between two branches, accounting for file moves with -C, and was surprised by the number of insertions and deletions that it indicated, because it was telling me I had removed more than I added, which I really don't think is true.

I took a closer look, and what happens is that I had a lot of stuff in a __init__.py file that I moved to another file, while keeping a now new, empty, __init__.py file.

Which means while diff counts the deletions from __init__.py, it doesn't count the additions from the move because it is a move, leading to a counter-intuitive result.

Here's how to reproduce in case code makes more sense than prose:
/tmp$ git init g
Initialized empty Git repository in /tmp/g/.git/
/tmp$ cd g
/tmp/g$ echo foo > foo
/tmp/g$ git add foo
/tmp/g$ git commit -m foo
[master (root-commit) 14749a7] foo
 1 file changed, 1 insertion(+)
 create mode 100644 foo
/tmp/g$ git mv foo bar
/tmp/g$ touch foo
/tmp/g$ git add foo
/tmp/g$ git commit -m bar
[master 9fbf50e] bar
 2 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 bar
/tmp/g$ git diff HEAD~ -C --stat
 foo => bar | 0
 foo        | 1 -
 2 files changed, 1 deletion(-)

I'm actually not sure what the right thing would be. I guess this is a case where -B should help, but it doesn't.

Any thoughts?
Mike
Next: Junio C Hamano
Message 1 of 2 in “Counter-intuitive result from diff -C --stat”
  1. Mike HommeyDec 28, 2016
  2. Junio C HamanoJan 1, 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.