Merge branch 'cb/t5004-empty-tar-archive-fix'
[gitweb.git] / sha1-name.c
index 2594aa79f8634676cd835d9a2de200e89193bc0c..b24502811bbad1bb89908f0914366e4f1cb9178b 100644 (file)
@@ -83,45 +83,19 @@ static void update_candidates(struct disambiguate_state *ds, const struct object
        /* otherwise, current can be discarded and candidate is still good */
 }
 
-static int append_loose_object(const struct object_id *oid, const char *path,
-                              void *data)
-{
-       oid_array_append(data, oid);
-       return 0;
-}
-
 static int match_sha(unsigned, const unsigned char *, const unsigned char *);
 
 static void find_short_object_filename(struct disambiguate_state *ds)
 {
        int subdir_nr = ds->bin_pfx.hash[0];
        struct object_directory *odb;
-       static struct object_directory *fakeent;
 
-       if (!fakeent) {
-               /*
-                * Create a "fake" alternate object database that
-                * points to our own object database, to make it
-                * easier to get a temporary working space in
-                * alt->name/alt->base while iterating over the
-                * object databases including our own.
-                */
-               fakeent = alloc_alt_odb(get_object_directory());
-       }
-       fakeent->next = the_repository->objects->alt_odb_list;
-
-       for (odb = fakeent; odb && !ds->ambiguous; odb = odb->next) {
+       for (odb = the_repository->objects->odb;
+            odb && !ds->ambiguous;
+            odb = odb->next) {
                int pos;
 
-               if (!odb->loose_objects_subdir_seen[subdir_nr]) {
-                       struct strbuf *buf = alt_scratch_buf(odb);
-                       for_each_file_in_obj_subdir(subdir_nr, buf,
-                                                   append_loose_object,
-                                                   NULL, NULL,
-                                                   &odb->loose_objects_cache);
-                       odb->loose_objects_subdir_seen[subdir_nr] = 1;
-               }
-
+               odb_load_loose_cache(odb, subdir_nr);
                pos = oid_array_lookup(&odb->loose_objects_cache, &ds->bin_pfx);
                if (pos < 0)
                        pos = -1 - pos;