test-lib: introduce test_commit_bulk
[gitweb.git] / object.c
index c4170d2d0cb038d79f1e9bba5336ad47360cb4d2..e81d47a79cd6eb42fae7c104be0e9ac1e5173e79 100644 (file)
--- a/object.c
+++ b/object.c
@@ -164,8 +164,9 @@ void *object_as_type(struct repository *r, struct object *obj, enum object_type
                return obj;
        else if (obj->type == OBJ_NONE) {
                if (type == OBJ_COMMIT)
-                       ((struct commit *)obj)->index = alloc_commit_index(r);
-               obj->type = type;
+                       init_commit_node(r, (struct commit *) obj);
+               else
+                       obj->type = type;
                return obj;
        }
        else {
@@ -263,7 +264,7 @@ struct object *parse_object(struct repository *r, const struct object_id *oid)
            (!obj && repo_has_object_file(r, oid) &&
             oid_object_info(r, oid, NULL) == OBJ_BLOB)) {
                if (check_object_signature(repl, NULL, 0, NULL) < 0) {
-                       error(_("sha1 mismatch %s"), oid_to_hex(oid));
+                       error(_("hash mismatch %s"), oid_to_hex(oid));
                        return NULL;
                }
                parse_blob_buffer(lookup_blob(r, oid), NULL, 0);
@@ -274,7 +275,7 @@ struct object *parse_object(struct repository *r, const struct object_id *oid)
        if (buffer) {
                if (check_object_signature(repl, buffer, size, type_name(type)) < 0) {
                        free(buffer);
-                       error(_("sha1 mismatch %s"), oid_to_hex(repl));
+                       error(_("hash mismatch %s"), oid_to_hex(repl));
                        return NULL;
                }
 
@@ -482,27 +483,26 @@ struct raw_object_store *raw_object_store_new(void)
        return o;
 }
 
-static void free_alt_odb(struct alternate_object_database *alt)
+static void free_object_directory(struct object_directory *odb)
 {
-       strbuf_release(&alt->scratch);
-       oid_array_clear(&alt->loose_objects_cache);
-       free(alt);
+       free(odb->path);
+       odb_clear_loose_cache(odb);
+       free(odb);
 }
 
-static void free_alt_odbs(struct raw_object_store *o)
+static void free_object_directories(struct raw_object_store *o)
 {
-       while (o->alt_odb_list) {
-               struct alternate_object_database *next;
+       while (o->odb) {
+               struct object_directory *next;
 
-               next = o->alt_odb_list->next;
-               free_alt_odb(o->alt_odb_list);
-               o->alt_odb_list = next;
+               next = o->odb->next;
+               free_object_directory(o->odb);
+               o->odb = next;
        }
 }
 
 void raw_object_store_clear(struct raw_object_store *o)
 {
-       FREE_AND_NULL(o->objectdir);
        FREE_AND_NULL(o->alternate_db);
 
        oidmap_free(o->replace_map, 1);
@@ -512,8 +512,9 @@ void raw_object_store_clear(struct raw_object_store *o)
        o->commit_graph = NULL;
        o->commit_graph_attempted = 0;
 
-       free_alt_odbs(o);
-       o->alt_odb_tail = NULL;
+       free_object_directories(o);
+       o->odb_tail = NULL;
+       o->loaded_alternates = 0;
 
        INIT_LIST_HEAD(&o->packed_git_mru);
        close_all_packs(o);
@@ -556,9 +557,11 @@ void parsed_object_pool_clear(struct parsed_object_pool *o)
        clear_alloc_state(o->commit_state);
        clear_alloc_state(o->tag_state);
        clear_alloc_state(o->object_state);
+       stat_validity_clear(o->shallow_stat);
        FREE_AND_NULL(o->blob_state);
        FREE_AND_NULL(o->tree_state);
        FREE_AND_NULL(o->commit_state);
        FREE_AND_NULL(o->tag_state);
        FREE_AND_NULL(o->object_state);
+       FREE_AND_NULL(o->shallow_stat);
 }