So, I've spent some time in the #git channel on Freenode chatting
about this, and we couldn't figure it out. I can't reproduce it in a
newly-made repository, but it's reproducible with the repository I've
been working in.
> git status
On branch Master
Your branch is ahead of 'ec/Master' by 2 commits.
(use "git push" to publish your local commits)
nothing to commit, working directory clean
> g diff --find-copies-harder
diff --git i/Executables/paws.js w/Executables/paws.js
old mode 100755
new mode 100644
> stat -f '%p' Executables/paws.js
100755
>
- As demonstrated by the `stat`, the mode-change shown by `git diff`
is a phantom change; it never happened.
- If I remove the `--find-copies-harder` flag, it doesn't show up.
- If I choose to --no-assume-unchanged the executable, it doesn't show up.
- If I change the actual file-mode to the 644 it thinks it is, and
commit it, it doesn't show up.
It's only the precise combination of A) a file flagged +x, B) that
file --assume-unchange'd on the index, and C) diff called with the
--find-copies-harder flag, that shows the phantom mode-change.
I tried reproducing that situation in a clean repository, and the
problem didn't seem to surface. You're welcome to clone the repository
in question, however, and reproduce it yourself:
> git clone https://github.com/ELLIOTTCABLE/Paws.js.git
> git update-index --assume-unchanged Executables/paws.js
> git diff --find-copies-harder
> stat -f '%p' Executables/paws.js
I'm working on git 1.9.2.
⁓ ELLIOTTCABLE — fly safe.
http://ell.io/tt
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html