diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-03-20 15:16:07 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-03-20 15:16:07 +0900 |
commit | 83b13e284ce3e349aedfc48fc0fb885c390bb18b (patch) | |
tree | 936dc66007bd7ae0c9a2c34ca66e190fa4305952 | |
parent | 27cdbdd134f181fc97f9589039ed7c0d12759b5a (diff) | |
parent | f06ab027efd2cff4c4319354f1ad7d5f09e853a1 (diff) | |
download | git-83b13e284ce3e349aedfc48fc0fb885c390bb18b.tar.gz |
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.c | 2 | ||||
-rwxr-xr-x | t/t1060-object-corruption.sh | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/builtin/rev-list.c b/builtin/rev-list.c index 5b5b6dbb1c..425a5774db 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 4feb65157d..bc89371f53 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 |