store_tree didn't check for S_ISDIR(versions[1].mode), but it did check
for tree != NULL.
It's possible that tree == NULL && S_ISDIR(versions[1].mode) in which
case we need to load_tree and then to store_tree, and not to drop that
entry. Calling load_tree requires S_ISDIR check to be present, that's
why it is added..
Signed-off-by: Dmitry Ivankov <redacted>
---
fast-import.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/fast-import.c b/fast-import.c
index d5915b8..d917ea6 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -1474,8 +1474,11 @@ static void store_tree(struct tree_entry *root)
return;
for (i = 0; i < t->entry_count; i++) {
- if (t->entries[i]->tree)
- store_tree(t->entries[i]);
+ if (!S_ISDIR(t->entries[i]->versions[1].mode))
+ continue;
+ if (!t->entries[i]->tree)
+ load_tree(t->entries[i]);
+ store_tree(t->entries[i]);
}
le = find_object(root->versions[0].sha1);--
1.7.3.4