entry: support CE_WT_REMOVE flag in checkout_entry

'checkout_entry()' currently only supports creating new entries in the working tree, but not deleting them. Add the ability to remove entries at the same time if the entry is marked with the CE_WT_REMOVE flag. Currently this doesn't have any effect, as the CE_WT_REMOVE flag is only used in unpack-tree, however we will make use of this in a subsequent step in the series. Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Thomas Gummerer committed Dec 20, 2018 at 13:48 UTC 536ec1839dbde8b9a6b38e6ccb5ab01b2b6311f9
1 file changed +11
entry.c
+11
@@ -441,6 +441,17 @@ int checkout_entry(struct cache_entry *ce,
441 static struct strbuf path = STRBUF_INIT;
442 struct stat st;
443
444 + if (ce->ce_flags & CE_WT_REMOVE) {
445 + if (topath)
446 + /*
447 + * No content and thus no path to create, so we have
448 + * no pathname to return.
449 + */
450 + BUG("Can't remove entry to a path");
451 + unlink_entry(ce);
452 + return 0;
453 + }
454 +
455 if (topath)
456 return write_entry(ce, topath, state, 1);
457