diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-11-28 19:55:25 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-11-28 19:58:24 -0800 |
commit | 388b2acd6e649145d4368a10cf4df5f5bbbac2c2 (patch) | |
tree | 2981eb9ed66bb9841ac7fae18022326ddda48018 /builtin-rm.c | |
parent | 69530cb0c0d5f08dac9bedff56c164b7370f9931 (diff) | |
download | git-388b2acd6e649145d4368a10cf4df5f5bbbac2c2.tar.gz |
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>
Diffstat (limited to 'builtin-rm.c')
-rw-r--r-- | builtin-rm.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin-rm.c b/builtin-rm.c index 3d03da09df..c11f455858 100644 --- a/builtin-rm.c +++ b/builtin-rm.c @@ -115,7 +115,7 @@ static int check_local_mod(unsigned char *head, int index_only) * "intent to add" entry. */ if (local_changes && staged_changes) { - if (!index_only || !is_empty_blob_sha1(ce->sha1)) + if (!index_only || !(ce->ce_flags & CE_INTENT_TO_ADD)) errs = error("'%s' has staged content different " "from both the file and the HEAD\n" "(use -f to force removal)", name); |