packfile: pass down repository to has_object[_kept]_pack

The functions `has_object[_kept]_pack` currently rely on the global
variable `the_repository`. To eliminate global variable usage in
`packfile.c`, we should progressively shift the dependency on
the_repository to higher layers. Let's remove its usage from these
functions and any related ones.

Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Karthik Nayak 2024-12-03 15:43:59 +01:00 committed by Junio C Hamano
parent 873b00597b
commit cc656f4eb2
11 changed files with 21 additions and 17 deletions

View File

@ -67,7 +67,7 @@ static int count_loose(const struct object_id *oid, const char *path,
else { else {
loose_size += on_disk_bytes(st); loose_size += on_disk_bytes(st);
loose++; loose++;
if (verbose && has_object_pack(oid)) if (verbose && has_object_pack(the_repository, oid))
packed_loose++; packed_loose++;
} }
return 0; return 0;

View File

@ -272,7 +272,7 @@ static void check_reachable_object(struct object *obj)
if (!(obj->flags & HAS_OBJ)) { if (!(obj->flags & HAS_OBJ)) {
if (is_promisor_object(&obj->oid)) if (is_promisor_object(&obj->oid))
return; return;
if (has_object_pack(&obj->oid)) if (has_object_pack(the_repository, &obj->oid))
return; /* it is in pack - forget about it */ return; /* it is in pack - forget about it */
printf_ln(_("missing %s %s"), printf_ln(_("missing %s %s"),
printable_type(&obj->oid, obj->type), printable_type(&obj->oid, obj->type),

View File

@ -1529,7 +1529,7 @@ static int want_found_object(const struct object_id *oid, int exclude,
return 0; return 0;
if (ignore_packed_keep_in_core && p->pack_keep_in_core) if (ignore_packed_keep_in_core && p->pack_keep_in_core)
return 0; return 0;
if (has_object_kept_pack(oid, flags)) if (has_object_kept_pack(p->repo, oid, flags))
return 0; return 0;
} }
@ -3627,7 +3627,7 @@ static void show_cruft_commit(struct commit *commit, void *data)
static int cruft_include_check_obj(struct object *obj, void *data UNUSED) static int cruft_include_check_obj(struct object *obj, void *data UNUSED)
{ {
return !has_object_kept_pack(&obj->oid, IN_CORE_KEEP_PACKS); return !has_object_kept_pack(to_pack.repo, &obj->oid, IN_CORE_KEEP_PACKS);
} }
static int cruft_include_check(struct commit *commit, void *data) static int cruft_include_check(struct commit *commit, void *data)

3
diff.c
View File

@ -4041,7 +4041,8 @@ static int reuse_worktree_file(struct index_state *istate,
* objects however would tend to be slower as they need * objects however would tend to be slower as they need
* to be individually opened and inflated. * to be individually opened and inflated.
*/ */
if (!FAST_WORKING_DIRECTORY && !want_file && has_object_pack(oid)) if (!FAST_WORKING_DIRECTORY && !want_file &&
has_object_pack(istate->repo, oid))
return 0; return 0;
/* /*

View File

@ -41,7 +41,8 @@ static void show_object(struct traversal_context *ctx,
{ {
if (!ctx->show_object) if (!ctx->show_object)
return; return;
if (ctx->revs->unpacked && has_object_pack(&object->oid)) if (ctx->revs->unpacked && has_object_pack(ctx->revs->repo,
&object->oid))
return; return;
ctx->show_object(object, name, ctx->show_data); ctx->show_object(object, name, ctx->show_data);

View File

@ -1889,7 +1889,7 @@ static void filter_packed_objects_from_bitmap(struct bitmap_index *bitmap_git,
bitmap_unset(result, i); bitmap_unset(result, i);
for (i = 0; i < eindex->count; ++i) { for (i = 0; i < eindex->count; ++i) {
if (has_object_pack(&eindex->objects[i]->oid)) if (has_object_pack(the_repository, &eindex->objects[i]->oid))
bitmap_unset(result, objects_nr + i); bitmap_unset(result, objects_nr + i);
} }
} }

View File

@ -2143,16 +2143,17 @@ int find_kept_pack_entry(struct repository *r,
return 0; return 0;
} }
int has_object_pack(const struct object_id *oid) int has_object_pack(struct repository *r, const struct object_id *oid)
{ {
struct pack_entry e; struct pack_entry e;
return find_pack_entry(the_repository, oid, &e); return find_pack_entry(r, oid, &e);
} }
int has_object_kept_pack(const struct object_id *oid, unsigned flags) int has_object_kept_pack(struct repository *r, const struct object_id *oid,
unsigned flags)
{ {
struct pack_entry e; struct pack_entry e;
return find_kept_pack_entry(the_repository, oid, flags, &e); return find_kept_pack_entry(r, oid, flags, &e);
} }
int for_each_object_in_pack(struct packed_git *p, int for_each_object_in_pack(struct packed_git *p,

View File

@ -193,8 +193,9 @@ const struct packed_git *has_packed_and_bad(struct repository *, const struct ob
int find_pack_entry(struct repository *r, const struct object_id *oid, struct pack_entry *e); int find_pack_entry(struct repository *r, const struct object_id *oid, struct pack_entry *e);
int find_kept_pack_entry(struct repository *r, const struct object_id *oid, unsigned flags, struct pack_entry *e); int find_kept_pack_entry(struct repository *r, const struct object_id *oid, unsigned flags, struct pack_entry *e);
int has_object_pack(const struct object_id *oid); int has_object_pack(struct repository *r, const struct object_id *oid);
int has_object_kept_pack(const struct object_id *oid, unsigned flags); int has_object_kept_pack(struct repository *r, const struct object_id *oid,
unsigned flags);
/* /*
* Return 1 if an object in a promisor packfile is or refers to the given * Return 1 if an object in a promisor packfile is or refers to the given

View File

@ -24,7 +24,7 @@ static int prune_object(const struct object_id *oid, const char *path,
{ {
int *opts = data; int *opts = data;
if (!has_object_pack(oid)) if (!has_object_pack(the_repository, oid))
return 0; return 0;
if (*opts & PRUNE_PACKED_DRY_RUN) if (*opts & PRUNE_PACKED_DRY_RUN)

View File

@ -239,7 +239,7 @@ static int want_recent_object(struct recent_data *data,
const struct object_id *oid) const struct object_id *oid)
{ {
if (data->ignore_in_core_kept_packs && if (data->ignore_in_core_kept_packs &&
has_object_kept_pack(oid, IN_CORE_KEEP_PACKS)) has_object_kept_pack(data->revs->repo, oid, IN_CORE_KEEP_PACKS))
return 0; return 0;
return 1; return 1;
} }

View File

@ -4103,10 +4103,10 @@ enum commit_action get_commit_action(struct rev_info *revs, struct commit *commi
{ {
if (commit->object.flags & SHOWN) if (commit->object.flags & SHOWN)
return commit_ignore; return commit_ignore;
if (revs->unpacked && has_object_pack(&commit->object.oid)) if (revs->unpacked && has_object_pack(revs->repo, &commit->object.oid))
return commit_ignore; return commit_ignore;
if (revs->no_kept_objects) { if (revs->no_kept_objects) {
if (has_object_kept_pack(&commit->object.oid, if (has_object_kept_pack(revs->repo, &commit->object.oid,
revs->keep_pack_cache_flags)) revs->keep_pack_cache_flags))
return commit_ignore; return commit_ignore;
} }