diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2012-02-28 11:36:52 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-02-28 11:15:54 -0800 |
commit | 8e8aa58784996b2556edc9d2da0889c887dec50e (patch) | |
tree | 0175441e3b82a3efc141d5bafacdf75338067579 | |
parent | 25a7850a106ed0f27b88b8ce0b89fd326120dff4 (diff) | |
download | git-8e8aa58784996b2556edc9d2da0889c887dec50e.tar.gz |
index-pack: split second pass obj handling into own function
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/index-pack.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/builtin/index-pack.c b/builtin/index-pack.c index dd1c5c961d..918684f792 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -682,6 +682,23 @@ static int compare_delta_entry(const void *a, const void *b) objects[delta_b->obj_no].type); } +/* + * Second pass: + * - for all non-delta objects, look if it is used as a base for + * deltas; + * - if used as a base, uncompress the object and apply all deltas, + * recursively checking if the resulting object is used as a base + * for some more deltas. + */ +static void second_pass(struct object_entry *obj) +{ + struct base_data *base_obj = alloc_base_data(); + base_obj->obj = obj; + base_obj->data = NULL; + find_unresolved_deltas(base_obj); + display_progress(progress, nr_resolved_deltas); +} + /* Parse all objects and return the pack content SHA1 hash */ static void parse_pack_objects(unsigned char *sha1) { @@ -736,26 +753,14 @@ static void parse_pack_objects(unsigned char *sha1) qsort(deltas, nr_deltas, sizeof(struct delta_entry), compare_delta_entry); - /* - * Second pass: - * - for all non-delta objects, look if it is used as a base for - * deltas; - * - if used as a base, uncompress the object and apply all deltas, - * recursively checking if the resulting object is used as a base - * for some more deltas. - */ if (verbose) progress = start_progress("Resolving deltas", nr_deltas); for (i = 0; i < nr_objects; i++) { struct object_entry *obj = &objects[i]; - struct base_data *base_obj = alloc_base_data(); if (is_delta_type(obj->type)) continue; - base_obj->obj = obj; - base_obj->data = NULL; - find_unresolved_deltas(base_obj); - display_progress(progress, nr_resolved_deltas); + second_pass(obj); } } |