summaryrefslogtreecommitdiff
path: root/unpack-trees.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-01-18 18:12:57 -0800
committerJunio C Hamano <gitster@pobox.com>2010-01-18 18:12:57 -0800
commit26b9f5cc99a35d4f678c2f565e48237fc9515444 (patch)
tree52775c8cb6e23c620adb84f6f34186085a41d8d9 /unpack-trees.c
parent243157506725befcf7c7ed7e79ca4708b63f3a65 (diff)
parentc5e558a80ad27774b9984258a31fbf46a1d7c152 (diff)
downloadgit-26b9f5cc99a35d4f678c2f565e48237fc9515444.tar.gz
Merge branch 'pc/uninteresting-submodule-disappear-upon-switch-branches'
* pc/uninteresting-submodule-disappear-upon-switch-branches: Remove empty directories when checking out a commit with fewer submodules
Diffstat (limited to 'unpack-trees.c')
-rw-r--r--unpack-trees.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/unpack-trees.c b/unpack-trees.c
index acdd311737..0ddbef3e63 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -67,8 +67,16 @@ static void unlink_entry(struct cache_entry *ce)
{
if (has_symlink_or_noent_leading_path(ce->name, ce_namelen(ce)))
return;
- if (unlink_or_warn(ce->name))
- return;
+ if (S_ISGITLINK(ce->ce_mode)) {
+ if (rmdir(ce->name)) {
+ warning("unable to rmdir %s: %s",
+ ce->name, strerror(errno));
+ return;
+ }
+ }
+ else
+ if (unlink_or_warn(ce->name))
+ return;
schedule_dir_for_removal(ce->name, ce_namelen(ce));
}