diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-01-04 13:33:32 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-01-04 13:33:32 -0800 |
| commit | 3b2f8a02fa9a9e68d5215828e1d97bb4f6996976 (patch) | |
| tree | 95480e645fe16f17fd9ccc43a893699476b60a63 /object.c | |
| parent | Merge branch 'fc/http-version' (diff) | |
| parent | odb_load_loose_cache: fix strbuf leak (diff) | |
| download | git-3b2f8a02fa9a9e68d5215828e1d97bb4f6996976.tar.gz git-3b2f8a02fa9a9e68d5215828e1d97bb4f6996976.zip | |
Merge branch 'jk/loose-object-cache'
Code clean-up with optimization for the codepath that checks
(non-)existence of loose objects.
* jk/loose-object-cache:
odb_load_loose_cache: fix strbuf leak
fetch-pack: drop custom loose object cache
sha1-file: use loose object cache for quick existence check
object-store: provide helpers for loose_objects_cache
sha1-file: use an object_directory for the main object dir
handle alternates paths the same as the main object dir
sha1_file_name(): overwrite buffer instead of appending
rename "alternate_object_database" to "object_directory"
submodule--helper: prefer strip_suffix() to ends_with()
fsck: do not reuse child_process structs
Diffstat (limited to 'object.c')
| -rw-r--r-- | object.c | 26 |
1 files changed, 13 insertions, 13 deletions
@@ -482,27 +482,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); + oid_array_clear(&odb->loose_objects_cache); + 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 +511,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); |
