summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-03-20 06:16:07 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-03-20 06:16:07 (GMT)
commit83b13e284ce3e349aedfc48fc0fb885c390bb18b (patch)
tree936dc66007bd7ae0c9a2c34ca66e190fa4305952
parent27cdbdd134f181fc97f9589039ed7c0d12759b5a (diff)
parentf06ab027efd2cff4c4319354f1ad7d5f09e853a1 (diff)
downloadgit-83b13e284ce3e349aedfc48fc0fb885c390bb18b.zip
git-83b13e284ce3e349aedfc48fc0fb885c390bb18b.tar.gz
git-83b13e284ce3e349aedfc48fc0fb885c390bb18b.tar.bz2
Merge branch 'jk/virtual-objects-do-exist'
A recent update broke "is this object available to us?" check for well-known objects like an empty tree (which should yield "yes", even when there is no on-disk object for an empty tree), which has been corrected. * jk/virtual-objects-do-exist: rev-list: allow cached objects in existence check
-rw-r--r--builtin/rev-list.c2
-rwxr-xr-xt/t1060-object-corruption.sh10
2 files changed, 11 insertions, 1 deletions
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 5b5b6db..425a577 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -238,7 +238,7 @@ static inline void finish_object__ma(struct object *obj)
static int finish_object(struct object *obj, const char *name, void *cb_data)
{
struct rev_list_info *info = cb_data;
- if (!has_object_file(&obj->oid)) {
+ if (oid_object_info_extended(the_repository, &obj->oid, NULL, 0) < 0) {
finish_object__ma(obj);
return 1;
}
diff --git a/t/t1060-object-corruption.sh b/t/t1060-object-corruption.sh
index 4feb651..bc89371 100755
--- a/t/t1060-object-corruption.sh
+++ b/t/t1060-object-corruption.sh
@@ -127,4 +127,14 @@ test_expect_success 'fetch into corrupted repo with index-pack' '
)
'
+test_expect_success 'internal tree objects are not "missing"' '
+ git init missing-empty &&
+ (
+ cd missing-empty &&
+ empty_tree=$(git hash-object -t tree /dev/null) &&
+ commit=$(echo foo | git commit-tree $empty_tree) &&
+ git rev-list --objects $commit
+ )
+'
+
test_done