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