On 25/07/09 09:54AM, Patrick Steinhardt wrote: > In the preceding commit we have refactored how we load multi-pack > indices so that we take take the source as input for which we want to s/take take/take/ > load the MIDX. As part of this refactoring we started to store a pointer > to the MIDX in `struct odb_source` itself. > > Refactor loading of packfiles in the same way: instead of passing in the > object directory, we now pass in the source for which we want to load > packfiles. This allows us to simplify the code because we don't have to > search for a corresponding MIDX anymore, but we can instead directly use > the MIDX that we have already prepared beforehand. The `odb_source` now contains readily contains MIDX, objdir, and repository which allows us to simplify. Nice > > Signed-off-by: Patrick Steinhardt <ps@xxxxxx> > --- > packfile.c | 23 +++++++++-------------- > 1 file changed, 9 insertions(+), 14 deletions(-) > > diff --git a/packfile.c b/packfile.c > index 16efc2fdca3..b43dd2fe6cb 100644 > --- a/packfile.c > +++ b/packfile.c > @@ -935,22 +935,17 @@ static void prepare_pack(const char *full_name, size_t full_name_len, > report_garbage(PACKDIR_FILE_GARBAGE, full_name); > } > > -static void prepare_packed_git_one(struct repository *r, char *objdir, int local) > +static void prepare_packed_git_one(struct odb_source *source, int local) > { > - struct prepare_pack_data data; > struct string_list garbage = STRING_LIST_INIT_DUP; > + struct prepare_pack_data data = { > + .m = source->multi_pack_index, > + .r = source->odb->repo, > + .garbage = &garbage, > + .local = local, > + }; > > - data.m = r->objects->multi_pack_index; > - > - /* look for the multi-pack-index for this object directory */ > - while (data.m && strcmp(data.m->object_dir, objdir)) > - data.m = data.m->next; Much simpler now :) > - > - data.r = r; > - data.garbage = &garbage; > - data.local = local; > - > - for_each_file_in_pack_dir(objdir, prepare_pack, &data); > + for_each_file_in_pack_dir(source->path, prepare_pack, &data); > > report_pack_garbage(data.garbage); > string_list_clear(data.garbage, 0); > @@ -1040,7 +1035,7 @@ static void prepare_packed_git(struct repository *r) > for (source = r->objects->sources; source; source = source->next) { > int local = (source == r->objects->sources); > prepare_multi_pack_index_one(source, local); > - prepare_packed_git_one(r, source->path, local); > + prepare_packed_git_one(source, local); > } > rearrange_packed_git(r); > > > -- > 2.50.1.327.g047016eb4a.dirty > >