diff --git a/read-tree.c b/read-tree.c
index 5d304641067779b2c630a616279937378fe60c2c..3f0233954725397c8783f544f2f8d27125b82a13 100644 (file)
--- a/read-tree.c
+++ b/read-tree.c
if (!a) {
invalidate_ce_path(old);
- return 0;
+ return deleted_entry(old, NULL);
}
if (old && same(old, a)) {
+ struct stat st;
+ if (lstat(old->name, &st) || ce_match_stat(old, &st, 1))
+ old->ce_flags |= htons(CE_UPDATE);
return keep_entry(old);
}
return merged_entry(a, NULL);
if (1 < index_only + update)
usage(read_tree_usage);
- if (get_sha1(arg, sha1) < 0)
- usage(read_tree_usage);
+ if (get_sha1(arg, sha1))
+ die("Not a valid object name %s", arg);
if (list_tree(sha1) < 0)
die("failed to unpack tree object %s", arg);
stage++;