Re: [PATCH 2/8] packfile: refactor `prepare_packed_git_one()` to work on sources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> 
> 




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux