Merge branch 'jk/virtual-objects-do-exist'
authorJunio C Hamano <gitster@pobox.com>
Wed, 20 Mar 2019 06:16:07 +0000 (15:16 +0900)
committerJunio C Hamano <gitster@pobox.com>
Wed, 20 Mar 2019 06:16:07 +0000 (15:16 +0900)
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

builtin/rev-list.c
t/t1060-object-corruption.sh
index 5b5b6dbb1c9b6f9893f3d0420c99655eb19501a8..425a5774db0697774df499fc16a626ab1e1efcf9 100644 (file)
@@ -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;
        }
index 4feb65157d87e803a6cd2caf6cec2a945f54b085..bc89371f53436dbf3427f231f560ef1b1f8683f6 100755 (executable)
@@ -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