Subject: Re: [GSOC PATCH v2 1/2] repository: move 'repository_format_precious_objects' to repo scope

From: Patrick Steinhardt <[email-masked]>
Date: Tue, 1 Jul 2025 15:01:24 +0200

On Mon, Jun 30, 2025 at 10:11:04PM +0530, Ayush Chandekar wrote:
> The 'extensions.preciousObjects' setting when set true, prevents
> operations that might drop objects from the object storage.
> This setting is populated in the global variable
> 'repository_format_precious_objects'.
> Move this global variable to repo scope by adding it to struct
> `repository` and also refactor all the occurences accordingly.

Tiny nit: the line wrapping of this paragraph is a bit weird -- it
should generally wrap at 72 characters and paragraphs are typically
separated from one another by an empty newline.

> diff --git a/repository.c b/repository.c
> index 9b3d6665fc..62709d1c91 100644
> --- a/repository.c
> +++ b/repository.c
> @@ -284,6 +284,7 @@ int repo_init(struct repository *repo,
>  	repo_set_ref_storage_format(repo, format.ref_storage_format);
>  	repo->repository_format_worktree_config = format.worktree_config;
>  	repo->repository_format_relative_worktrees = format.relative_worktrees;
> +	repo->repository_format_precious_objects = format.precious_objects;
>  
>  	/* take ownership of format.partial_clone */
>  	repo->repository_format_partial_clone = format.partial_clone;

The list of variables that we copy from `format` grows longer and
longer. I wonder whether it would make sense to embed a `struct
repository_format` in the repository and then copy over the whole
structure?

Patrick