Make git-add behave more sensibly in a case-insensitive environment
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Sat, 22 Mar 2008 21:22:44 +0000 (14:22 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 9 Apr 2008 08:22:25 +0000 (01:22 -0700)
commit1102952b45dde09d73445aa2284bcb592362fa23
tree313f32f319e2d7fda886e7fcf9179e558eaba1ab
parent6835550def046bfd52f3e65f248024956a6df62c
Make git-add behave more sensibly in a case-insensitive environment

This expands on the previous patch, and allows "git add" to sanely handle
a filename that has changed case, keeping the case in the index constant,
and avoiding aliases.

In particular, if you have an index entry called "File", but the
checked-out tree is case-corrupted and has an entry called "file"
instead, doing a

git add .

(or naming "file" explicitly) will automatically notice that we have an
alias, and will replace the name "file" with the existing index
capitalization (ie "File").

However, if we actually have *both* a file called "File" and one called
"file", and they don't have the same lstat() information (ie we're on a
case-sensitive filesystem but have the "core.ignorecase" flag set), we
will error out if we try to add them both.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
cache.h
read-cache.c