read-cache: optionally disallow HFS+ .git variants
commita42643aa8d88a2278acad2da6bc702e426476e9b
authorJeff King <peff@peff.net>
Mon, 15 Dec 2014 23:15:20 +0000 (15 18:15 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Dec 2014 19:04:44 +0000 (17 11:04 -0800)
tree7615fa47756c5b42bfc89e12514ee354fa736ecc
parent6162a1d323d24fd8cbbb1a6145a91fb849b2568f
read-cache: optionally disallow HFS+ .git variants

The point of disallowing ".git" in the index is that we
would never want to accidentally overwrite files in the
repository directory. But this means we need to respect the
filesystem's idea of when two paths are equal. The prior
commit added a helper to make such a comparison for HFS+;
let's use it in verify_path.

We make this check optional for two reasons:

  1. It restricts the set of allowable filenames, which is
     unnecessary for people who are not on HFS+. In practice
     this probably doesn't matter, though, as the restricted
     names are rather obscure and almost certainly would
     never come up in practice.

  2. It has a minor performance penalty for every path we
     insert into the index.

This patch ties the check to the core.protectHFS config
option. Though this is expected to be most useful on OS X,
we allow it to be set everywhere, as HFS+ may be mounted on
other platforms. The variable does default to on for OS X,
though.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
cache.h
config.c
config.mak.uname
environment.c
read-cache.c
t/t1014-read-tree-confusing.sh
t/test-lib.sh