diff --git a/unpack-trees.c b/unpack-trees.c
index cba0aca062f201c5cd5f8799f2190d4a6f06e7c7..e59d144d28164f2451784513105f6269f0e9167c 100644 (file)
--- a/unpack-trees.c
+++ b/unpack-trees.c
state.refresh_cache = 1;
memset(&o->result, 0, sizeof(o->result));
+ o->result.initialized = 1;
if (o->src_index)
o->result.timestamp = o->src_index->timestamp;
o->merge_size = len;
return -1;
}
}
- else if (newtree)
+ else if (newtree) {
+ if (oldtree && !o->initial_checkout) {
+ /*
+ * deletion of the path was staged;
+ */
+ if (same(oldtree, newtree))
+ return 1;
+ return reject_merge(oldtree, o);
+ }
return merged_entry(newtree, current, o);
+ }
return deleted_entry(oldtree, current, o);
}