entry: support CE_WT_REMOVE flag in checkout_entry
[gitweb.git] / entry.c
diff --git a/entry.c b/entry.c
index b9eef57117169487157e9e14e6b96b7defee113e..3d3701e7ae148b623e353ad2874e9dce28cca32b 100644 (file)
--- a/entry.c
+++ b/entry.c
@@ -441,6 +441,17 @@ int checkout_entry(struct cache_entry *ce,
        static struct strbuf path = STRBUF_INIT;
        struct stat st;
 
+       if (ce->ce_flags & CE_WT_REMOVE) {
+               if (topath)
+                       /*
+                        * No content and thus no path to create, so we have
+                        * no pathname to return.
+                        */
+                       BUG("Can't remove entry to a path");
+               unlink_entry(ce);
+               return 0;
+       }
+
        if (topath)
                return write_entry(ce, topath, state, 1);