* [PATCH] prune-packed: remove USE_THE_REPOSITORY_VARIABLE
@ 2026-10-18 16:31 Shashank S via GitGitGadget
0 siblings, 0 replies; only message in thread
From: Shashank S via GitGitGadget @ 2026-10-18 16:31 UTC (permalink / raw)
To: git
Cc: Kaartic Sivaraam, Christian Couder, Siddharth Asthana,
Usman Akinyemi, Junio C Hamano, Shashank S, Shashank
From: Shashank <shashu8660@gmail.com>
Right now, the prune_packed_objects() function uses the global
the_repository variable. To help with the libification effort,
change this function so it takes a 'struct repository' pointer
as an argument instead.
The function for_each_loose_file_in_source() uses a callback
that only takes a single 'void *data' pointer. This means we
cannot pass both the repository pointer and the 'opts' integer
at the same time. To fix this, create a new 'struct prune_data'
to hold both of them together, and update the prune_subdir() and
prune_object() callbacks to read from this new struct.
Update the builtins that call this function (builtin/prune-packed.c,
builtin/prune.c, and builtin/repack.c) to pass their local `repo`
variables. Because we are now actually using the 'repo' parameter
in these files, we can safely remove the UNUSED macro from them.
finally, drop the USE_THE_REPOSITORY_VARIABLE macro from
prune-packed.c.
Signed-off-by: Shashank <shashu8660@gmail.com>
---
[Outreachy PATCH] prune-packed: remove use_the_repository_variable
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2266%2Fshashu8660%2Foutreachy2-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2266/shashu8660/outreachy2-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/2266
builtin/prune-packed.c | 4 ++--
builtin/prune.c | 2 +-
builtin/repack.c | 2 +-
prune-packed.c | 32 ++++++++++++++++++++------------
prune-packed.h | 4 +++-
5 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/builtin/prune-packed.c b/builtin/prune-packed.c
index 4d63f26b0a..d44e7f81d4 100644
--- a/builtin/prune-packed.c
+++ b/builtin/prune-packed.c
@@ -11,7 +11,7 @@ static const char * const prune_packed_usage[] = {
int cmd_prune_packed(int argc,
const char **argv,
const char *prefix,
- struct repository *repo UNUSED)
+ struct repository *repo)
{
int opts = isatty(2) ? PRUNE_PACKED_VERBOSE : 0;
const struct option prune_packed_options[] = {
@@ -30,6 +30,6 @@ int cmd_prune_packed(int argc,
prune_packed_usage,
prune_packed_options);
- prune_packed_objects(opts);
+ prune_packed_objects(repo, opts);
return 0;
}
diff --git a/builtin/prune.c b/builtin/prune.c
index a7e4678d11..4eee5a2e27 100644
--- a/builtin/prune.c
+++ b/builtin/prune.c
@@ -201,7 +201,7 @@ int cmd_prune(int argc,
for_each_loose_file_in_source(repo->objects->sources,
prune_object, prune_cruft, prune_subdir, &revs);
- prune_packed_objects(show_only ? PRUNE_PACKED_DRY_RUN : 0);
+ prune_packed_objects(repo, show_only ? PRUNE_PACKED_DRY_RUN : 0);
remove_temporary_files(repo_get_object_directory(repo));
s = mkpathdup("%s/pack", repo_get_object_directory(repo));
remove_temporary_files(s);
diff --git a/builtin/repack.c b/builtin/repack.c
index c4360382c1..e8970e8eb7 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -757,7 +757,7 @@ int cmd_repack(int argc,
wrote_incremental_midx);
if (show_progress)
opts |= PRUNE_PACKED_VERBOSE;
- prune_packed_objects(opts);
+ prune_packed_objects(repo, opts);
if (!keep_unreachable &&
(!(pack_everything & LOOSEN_UNREACHABLE) ||
diff --git a/prune-packed.c b/prune-packed.c
index d49dc11957..a53b7031b5 100644
--- a/prune-packed.c
+++ b/prune-packed.c
@@ -1,5 +1,3 @@
-#define USE_THE_REPOSITORY_VARIABLE
-
#include "git-compat-util.h"
#include "gettext.h"
#include "object-file.h"
@@ -8,40 +6,50 @@
#include "prune-packed.h"
#include "repository.h"
+struct prune_data {
+ struct repository *r;
+ int opts;
+};
+
static struct progress *progress;
static int prune_subdir(unsigned int nr, const char *path, void *data)
{
- int *opts = data;
+ struct prune_data *d = data;
display_progress(progress, nr + 1);
- if (!(*opts & PRUNE_PACKED_DRY_RUN))
+ if (!(d->opts & PRUNE_PACKED_DRY_RUN))
rmdir(path);
return 0;
}
static int prune_object(const struct object_id *oid, const char *path,
- void *data)
+ void *data)
{
- int *opts = data;
+ struct prune_data *d = data;
- if (!has_object_pack(the_repository, oid))
+ if (!has_object_pack(d->r, oid))
return 0;
- if (*opts & PRUNE_PACKED_DRY_RUN)
+ if (d->opts & PRUNE_PACKED_DRY_RUN)
printf("rm -f %s\n", path);
else
unlink_or_warn(path);
return 0;
}
-void prune_packed_objects(int opts)
+void prune_packed_objects(struct repository *r, int opts)
{
+ struct prune_data cb_data = {
+ .r = r,
+ .opts = opts
+ };
+
if (opts & PRUNE_PACKED_VERBOSE)
- progress = start_delayed_progress(the_repository,
+ progress = start_delayed_progress(r,
_("Removing duplicate objects"), 256);
- for_each_loose_file_in_source(the_repository->objects->sources,
- prune_object, NULL, prune_subdir, &opts);
+ for_each_loose_file_in_source(r->objects->sources,
+ prune_object, NULL, prune_subdir, &cb_data);
/* Ensure we show 100% before finishing progress */
display_progress(progress, 256);
diff --git a/prune-packed.h b/prune-packed.h
index 936fa9df23..9ec7ff0d60 100644
--- a/prune-packed.h
+++ b/prune-packed.h
@@ -1,9 +1,11 @@
#ifndef PRUNE_PACKED_H
#define PRUNE_PACKED_H
+struct repository;
+
#define PRUNE_PACKED_DRY_RUN 01
#define PRUNE_PACKED_VERBOSE 02
-void prune_packed_objects(int);
+void prune_packed_objects(struct repository *r, int opts);
#endif
base-commit: 6de20f6092dcf9bdb1c8efe03db4b70c82b423dd
--
gitgitgadget
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-18 16:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-18 16:31 [PATCH] prune-packed: remove USE_THE_REPOSITORY_VARIABLE Shashank S via GitGitGadget
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.