git add --intent-to-add: fix removal of cached emptiness
commit388b2acd6e649145d4368a10cf4df5f5bbbac2c2
authorJunio C Hamano <gitster@pobox.com>
Sat, 29 Nov 2008 03:55:25 +0000 (28 19:55 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 29 Nov 2008 03:58:24 +0000 (28 19:58 -0800)
tree2981eb9ed66bb9841ac7fae18022326ddda48018
parent69530cb0c0d5f08dac9bedff56c164b7370f9931
git add --intent-to-add: fix removal of cached emptiness

This uses the extended index flag mechanism introduced earlier to mark
the entries added to the index via "git add -N" with CE_INTENT_TO_ADD.

The logic to detect an "intent to add" entry for the purpose of allowing
"git rm --cached $path" is tightened to check not just for a staged empty
blob, but with the CE_INTENT_TO_ADD bit.  This protects an empty blob that
was explicitly added and then modified in the work tree from being dropped
with this sequence:

$ >empty
$ git add empty
$ echo "non empty" >empty
$ git rm --cached empty

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-rm.c
cache.h
read-cache.c
t/t3600-rm.sh