1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-29 00:26:12 +02:00

delta-islands.c: remove the_repository references

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2018-11-10 06:49:03 +01:00 committed by Junio C Hamano
parent c207e9e1f6
commit 385cb64ff3
3 changed files with 22 additions and 15 deletions

View File

@ -2628,7 +2628,7 @@ static void prepare_pack(int window, int depth)
unsigned n; unsigned n;
if (use_delta_islands) if (use_delta_islands)
resolve_tree_islands(progress, &to_pack); resolve_tree_islands(the_repository, progress, &to_pack);
get_object_details(); get_object_details();
@ -3143,7 +3143,7 @@ static void get_object_list(int ac, const char **av)
return; return;
if (use_delta_islands) if (use_delta_islands)
load_delta_islands(); load_delta_islands(the_repository);
if (prepare_revision_walk(&revs)) if (prepare_revision_walk(&revs))
die(_("revision walk setup failed")); die(_("revision walk setup failed"));

View File

@ -190,13 +190,15 @@ static void set_island_marks(struct object *obj, struct island_bitmap *marks)
island_bitmap_or(b, marks); island_bitmap_or(b, marks);
} }
static void mark_remote_island_1(struct remote_island *rl, int is_core_island) static void mark_remote_island_1(struct repository *r,
struct remote_island *rl,
int is_core_island)
{ {
uint32_t i; uint32_t i;
for (i = 0; i < rl->oids.nr; ++i) { for (i = 0; i < rl->oids.nr; ++i) {
struct island_bitmap *marks; struct island_bitmap *marks;
struct object *obj = parse_object(the_repository, &rl->oids.oid[i]); struct object *obj = parse_object(r, &rl->oids.oid[i]);
if (!obj) if (!obj)
continue; continue;
@ -211,7 +213,7 @@ static void mark_remote_island_1(struct remote_island *rl, int is_core_island)
while (obj && obj->type == OBJ_TAG) { while (obj && obj->type == OBJ_TAG) {
obj = ((struct tag *)obj)->tagged; obj = ((struct tag *)obj)->tagged;
if (obj) { if (obj) {
parse_object(the_repository, &obj->oid); parse_object(r, &obj->oid);
marks = create_or_get_island_marks(obj); marks = create_or_get_island_marks(obj);
island_bitmap_set(marks, island_counter); island_bitmap_set(marks, island_counter);
} }
@ -237,7 +239,9 @@ static int tree_depth_compare(const void *a, const void *b)
return todo_a->depth - todo_b->depth; return todo_a->depth - todo_b->depth;
} }
void resolve_tree_islands(int progress, struct packing_data *to_pack) void resolve_tree_islands(struct repository *r,
int progress,
struct packing_data *to_pack)
{ {
struct progress *progress_state = NULL; struct progress *progress_state = NULL;
struct tree_islands_todo *todo; struct tree_islands_todo *todo;
@ -281,7 +285,7 @@ void resolve_tree_islands(int progress, struct packing_data *to_pack)
root_marks = kh_value(island_marks, pos); root_marks = kh_value(island_marks, pos);
tree = lookup_tree(the_repository, &ent->idx.oid); tree = lookup_tree(r, &ent->idx.oid);
if (!tree || parse_tree(tree) < 0) if (!tree || parse_tree(tree) < 0)
die(_("bad tree object %s"), oid_to_hex(&ent->idx.oid)); die(_("bad tree object %s"), oid_to_hex(&ent->idx.oid));
@ -292,7 +296,7 @@ void resolve_tree_islands(int progress, struct packing_data *to_pack)
if (S_ISGITLINK(entry.mode)) if (S_ISGITLINK(entry.mode))
continue; continue;
obj = lookup_object(the_repository, entry.oid->hash); obj = lookup_object(r, entry.oid->hash);
if (!obj) if (!obj)
continue; continue;
@ -415,7 +419,7 @@ static struct remote_island *get_core_island(void)
return NULL; return NULL;
} }
static void deduplicate_islands(void) static void deduplicate_islands(struct repository *r)
{ {
struct remote_island *island, *core = NULL, **list; struct remote_island *island, *core = NULL, **list;
unsigned int island_count, dst, src, ref, i = 0; unsigned int island_count, dst, src, ref, i = 0;
@ -444,20 +448,20 @@ static void deduplicate_islands(void)
core = get_core_island(); core = get_core_island();
for (i = 0; i < island_count; ++i) { for (i = 0; i < island_count; ++i) {
mark_remote_island_1(list[i], core && list[i]->hash == core->hash); mark_remote_island_1(r, list[i], core && list[i]->hash == core->hash);
} }
free(list); free(list);
} }
void load_delta_islands(void) void load_delta_islands(struct repository *r)
{ {
island_marks = kh_init_sha1(); island_marks = kh_init_sha1();
remote_islands = kh_init_str(); remote_islands = kh_init_str();
git_config(island_config_callback, NULL); git_config(island_config_callback, NULL);
for_each_ref(find_island_for_ref, NULL); for_each_ref(find_island_for_ref, NULL);
deduplicate_islands(); deduplicate_islands(r);
fprintf(stderr, _("Marked %d islands, done.\n"), island_counter); fprintf(stderr, _("Marked %d islands, done.\n"), island_counter);
} }

View File

@ -1,14 +1,17 @@
#ifndef DELTA_ISLANDS_H #ifndef DELTA_ISLANDS_H
#define DELTA_ISLANDS_H #define DELTA_ISLANDS_H
struct commit;
struct object_id; struct object_id;
struct packing_data; struct packing_data;
struct commit; struct repository;
int island_delta_cmp(const struct object_id *a, const struct object_id *b); int island_delta_cmp(const struct object_id *a, const struct object_id *b);
int in_same_island(const struct object_id *, const struct object_id *); int in_same_island(const struct object_id *, const struct object_id *);
void resolve_tree_islands(int progress, struct packing_data *to_pack); void resolve_tree_islands(struct repository *r,
void load_delta_islands(void); int progress,
struct packing_data *to_pack);
void load_delta_islands(struct repository *r);
void propagate_island_marks(struct commit *commit); void propagate_island_marks(struct commit *commit);
int compute_pack_layers(struct packing_data *to_pack); int compute_pack_layers(struct packing_data *to_pack);