[GSOC PATCH v2 0/2] builtin/prune: remove dependency on global variables and 'the_repository'
- From
Ayush Chandekar <ayu.chandekar@gmail.com>
- Date
- Jun 30, 2025, 16:41 UTC
- Message-ID
- <cover.1751296633.git.ayu.chandekar@gmail.com>
- In-Reply-To
- <cover.1749343601.git.ayu.chandekar@gmail.com>
The aim of this patch series is to remove the definition '#define USE_THE_REPOSITORY_VARIABLE' from "builtin/prune.c" by removing global variables and the global 'the_repository'.
This patch series contains two patches:
1 - Move the global variable 'repository_format_precious_objects' into 'struct repository' and update all affected code paths accordingly.
2 - Remove the dependency of 'the_repository' in "builtin/prunce.c", allowing the removal of the definition.
Ayush Chandekar (2): repository: move 'repository_format_precious_objects' to repo scope builtin/prune: stop depending on 'the_repository'
builtin/gc.c | 2 +- builtin/prune.c | 27 ++++++++++++--------------- builtin/repack.c | 2 +- environment.c | 1 - environment.h | 2 -- repository.c | 1 + repository.h | 1 + setup.c | 5 ++++- 8 files changed, 20 insertions(+), 21 deletions(-)
--
Summary of the range-diff:
* Changed the commit message of 1/2 to use "setting" instead of "settings" since it refers to just one.
* Added "Mentored-by" tags in both 1/2 and 2/2.
* Fixed line formatting in builtin/prune.c in 2/2.
Range-diff:
1: 699f9a947d ! 1: 995389d622 repository: move 'repository_format_precious_objects' to repo scope
@@ Metadata
## Commit message ##
repository: move 'repository_format_precious_objects' to repo scope
- The 'extensions.preciousObjects' settings when set true, prevents
+ 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'.
@@ Commit message
This change is part of an ongoing effort to eliminate global variables,
improve modularity and help libify the codebase.
+ Mentored-by: Christian Couder <christian.couder@gmail.com>
+ Mentored-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Signed-off-by: Ayush Chandekar <ayu.chandekar@gmail.com>
## builtin/gc.c ##
2: f22cc88e9f ! 2: f70de9d549 builtin/prune: stop depending on 'the_repository'
@@ Commit message
repo and thus remove the definition '#define
USE_THE_REPOSITORY_VARIABLE'
+ Mentored-by: Christian Couder <christian.couder@gmail.com>
+ Mentored-by: Ghanshyam Thakkar <shyamthakkar001@gmail.com>
Signed-off-by: Ayush Chandekar <ayu.chandekar@gmail.com>
## builtin/prune.c ##
@@ builtin/prune.c: static int prune_object(const struct object_id *oid, const char
return 0;
if (show_only || verbose) {
- enum object_type type = oid_object_info(the_repository, oid,
-+ enum object_type type = oid_object_info(revs->repo, oid,
- NULL);
+- NULL);
++ enum object_type type = oid_object_info(revs->repo, oid, NULL);
printf("%s %s\n", oid_to_hex(oid),
(type > 0) ? type_name(type) : "unknown");
+ }
@@ builtin/prune.c: static void remove_temporary_files(const char *path)
int cmd_prune(int argc,
const char **argv,
@@ builtin/prune.c: int cmd_prune(int argc,
- if (!repo_get_oid(the_repository, name, &oid)) {
- struct object *object = parse_object_or_die(the_repository, &oid,
+- name);
+ if (!repo_get_oid(repo, name, &oid)) {
-+ struct object *object = parse_object_or_die(repo, &oid,
- name);
++ struct object *object = parse_object_or_die(repo, &oid, name);
add_pending_object(&revs, object, "");
}
+ else
@@ builtin/prune.c: int cmd_prune(int argc,
revs.exclude_promisor_objects = 1;
}
2.49.0