Merge branch 'az/instaweb-py3-http-server'
[gitweb.git] / sha1-name.c
index 358ca5e288a3a2d631a7a74fced54fe61d7c3e13..a656481c6aa9fbfe3eeff2367232690208ab8566 100644 (file)
@@ -83,50 +83,31 @@ 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;
-       struct strbuf buf = STRBUF_INIT;
 
        for (odb = the_repository->objects->odb;
             odb && !ds->ambiguous;
             odb = odb->next) {
                int pos;
+               struct oid_array *loose_objects;
 
-               if (!odb->loose_objects_subdir_seen[subdir_nr]) {
-                       strbuf_reset(&buf);
-                       strbuf_addstr(&buf, odb->path);
-                       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;
-               }
-
-               pos = oid_array_lookup(&odb->loose_objects_cache, &ds->bin_pfx);
+               loose_objects = odb_loose_cache(odb, &ds->bin_pfx);
+               pos = oid_array_lookup(loose_objects, &ds->bin_pfx);
                if (pos < 0)
                        pos = -1 - pos;
-               while (!ds->ambiguous && pos < odb->loose_objects_cache.nr) {
+               while (!ds->ambiguous && pos < loose_objects->nr) {
                        const struct object_id *oid;
-                       oid = odb->loose_objects_cache.oid + pos;
+                       oid = loose_objects->oid + pos;
                        if (!match_sha(ds->len, ds->bin_pfx.hash, oid->hash))
                                break;
                        update_candidates(ds, oid);
                        pos++;
                }
        }
-
-       strbuf_release(&buf);
 }
 
 static int match_sha(unsigned len, const unsigned char *a, const unsigned char *b)