Subject: Re: [PATCH 40/44] packfile: allow prepare_packed_git to handle arbitrary repositories

From: Brandon Williams <[email-masked]>
Date: Wed, 21 Mar 2018 15:39:23 -0700

On 03/03, Nguyễn Thái Ngọc Duy wrote:
> From: Stefan Beller <[email-masked]>
> 
> Signed-off-by: Stefan Beller <[email-masked]>
> Signed-off-by: Junio C Hamano <[email-masked]>
> Signed-off-by: Nguyễn Thái Ngọc Duy <[email-masked]>
> ---

This is an invalid conversion.

>  packfile.c | 18 +++++++++---------
>  packfile.h |  3 +--
>  2 files changed, 10 insertions(+), 11 deletions(-)
> 
> diff --git a/packfile.c b/packfile.c
> index 52febba932..2276e2ad26 100644
> --- a/packfile.c
> +++ b/packfile.c
> @@ -882,19 +882,19 @@ static void prepare_packed_git_mru(struct repository *r)
>  		list_add_tail(&p->mru, &r->objects.packed_git_mru);
>  }
>  
> -void prepare_packed_git_the_repository(void)
> +void prepare_packed_git(struct repository *r)
>  {
>  	struct alternate_object_database *alt;
>  
> -	if (the_repository->objects.packed_git_initialized)
> +	if (r->objects.packed_git_initialized)
>  		return;
> -	prepare_packed_git_one(the_repository, get_object_directory(), 1);
> -	prepare_alt_odb(the_repository);
> -	for (alt = the_repository->objects.alt_odb_list; alt; alt = alt->next)
> -		prepare_packed_git_one(the_repository, alt->path, 0);
> -	rearrange_packed_git(the_repository);
> -	prepare_packed_git_mru(the_repository);
> -	the_repository->objects.packed_git_initialized = 1;
> +	prepare_packed_git_one(r, get_object_directory(), 1);

Calling get_object_directory() returns the_repository's object dir,
this needs to be replaced with r->objects.objectdir.

> +	prepare_alt_odb(r);
> +	for (alt = r->objects.alt_odb_list; alt; alt = alt->next)
> +		prepare_packed_git_one(r, alt->path, 0);
> +	rearrange_packed_git(r);
> +	prepare_packed_git_mru(r);
> +	r->objects.packed_git_initialized = 1;
>  }
>  
>  void reprepare_packed_git_the_repository(void)
> diff --git a/packfile.h b/packfile.h
> index ab5046938c..3fd9092472 100644
> --- a/packfile.h
> +++ b/packfile.h
> @@ -34,8 +34,7 @@ extern struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_
>  #define PACKDIR_FILE_GARBAGE 4
>  extern void (*report_garbage)(unsigned seen_bits, const char *path);
>  
> -#define prepare_packed_git(r) prepare_packed_git_##r()
> -extern void prepare_packed_git_the_repository(void);
> +extern void prepare_packed_git(struct repository *r);
>  #define reprepare_packed_git(r) reprepare_packed_git_##r()
>  extern void reprepare_packed_git_the_repository(void);
>  extern void install_packed_git(struct repository *r, struct packed_git *pack);
> -- 
> 2.16.1.435.g8f24da2e1a
> 

-- 
Brandon Williams