Re: [PATCH] Add test that checkout does not overwrite entries in .git/info/exclude
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:52:30
Nguyen Thai Ngoc Duy [off-list ref] writes:
It dated back to f8a9d42 (read-tree: further loosen "working file will be lost" check. - 2006-12-04) when you introduced --exclude-per-directory to read-tree, but not --exclude-from to explicitly add .git/info/exclude.
That one together with 1127148 (Loosen "working file will be lost" check in Porcelain-ish, 2006-12-04) complets the picture. Thanks for digging this out.
I guess it's time to add "read-tree --exclude-from".
Perhaps, also --exclude-standard to match?
We may add an option to checkout to skip either .git/info/exclude or .gitignore, or both.
I do not think we want to go that route, because it is not just "checkout" but is an issue shared across users of unpack-trees machinery. When a merge result loses build/ directory and replaces it with a regular file "build", with the current ignore semantics, build/*.o will go but if you had an untracked and ignored build/TODO, the file will also go, for example. If we want to have "precious", we should either make "ignored" to mean "precious", or introduce a "precious" as a new category (cf. $gmane/185746)