Message ID | 20250116-kn-the-repo-cleanup-v1-2-a2f4c8e1c4c3@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | pack-write: cleanup usage of global variables | expand |
Karthik Nayak via B4 Relay <devnull+karthik.188.gmail.com@kernel.org> writes: > From: Karthik Nayak <karthik.188@gmail.com> > > The `index_pack_lockfile()` function uses the global `the_repository` > variable to access the repository. To avoid global variable usage, pass > the repository from the layers above. > > Altough the layers above could have access to the hash function I do not think the choice of the hash algorithm has much to do with this change, though ;-) > internally, simply pass in `the_hash_algo`. This avoids any > compatibility issues and bubbles up global variable usage to upper > layers which can be eventually resolved. > > Signed-off-by: Karthik Nayak <karthik.188@gmail.com> > --- > builtin/receive-pack.c | 2 +- > fetch-pack.c | 4 +++- > pack-write.c | 6 +++--- > pack.h | 2 +- > 4 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c > index 56347a79633505efe8dc05acf1583b4c9995eefe..b83abe5d220cefd3707b701409dc5e6b67566599 100644 > --- a/builtin/receive-pack.c > +++ b/builtin/receive-pack.c > @@ -2304,7 +2304,7 @@ static const char *unpack(int err_fd, struct shallow_info *si) > if (status) > return "index-pack fork failed"; > > - lockfile = index_pack_lockfile(child.out, NULL); > + lockfile = index_pack_lockfile(the_repository, child.out, NULL); > if (lockfile) { > pack_lockfile = register_tempfile(lockfile); > free(lockfile); > diff --git a/fetch-pack.c b/fetch-pack.c > index 3a227721ed0935d1f9c40584c57f54043354c032..824f56ecbca11cd9e4da6a3e4c450c6b2e7078ab 100644 > --- a/fetch-pack.c > +++ b/fetch-pack.c > @@ -1036,7 +1036,9 @@ static int get_pack(struct fetch_pack_args *args, > die(_("fetch-pack: unable to fork off %s"), cmd_name); > if (do_keep && (pack_lockfiles || fsck_objects)) { > int is_well_formed; > - char *pack_lockfile = index_pack_lockfile(cmd.out, &is_well_formed); > + char *pack_lockfile = index_pack_lockfile(the_repository, > + cmd.out, > + &is_well_formed); > > if (!is_well_formed) > die(_("fetch-pack: invalid index-pack output")); > diff --git a/pack-write.c b/pack-write.c > index fc887850dfb9789132b8642733c6472944dbe32d..0cd75d2e55419362a61cf981fc11117ea7a1d88a 100644 > --- a/pack-write.c > +++ b/pack-write.c > @@ -460,10 +460,10 @@ void fixup_pack_header_footer(const struct git_hash_algo *hash_algo, > fsync_component_or_die(FSYNC_COMPONENT_PACK, pack_fd, pack_name); > } > > -char *index_pack_lockfile(int ip_out, int *is_well_formed) > +char *index_pack_lockfile(struct repository *r, int ip_out, int *is_well_formed) > { > char packname[GIT_MAX_HEXSZ + 6]; > - const int len = the_hash_algo->hexsz + 6; > + const int len = r->hash_algo->hexsz + 6; > > /* > * The first thing we expect from index-pack's output > @@ -480,7 +480,7 @@ char *index_pack_lockfile(int ip_out, int *is_well_formed) > packname[len-1] = 0; > if (skip_prefix(packname, "keep\t", &name)) > return xstrfmt("%s/pack/pack-%s.keep", > - repo_get_object_directory(the_repository), name); > + repo_get_object_directory(r), name); > return NULL; > } > if (is_well_formed) > diff --git a/pack.h b/pack.h > index 6d9d477adc83e83d9e9175ccf699c100b4c147c6..46d85e5bec787c90af69700fd4b328b1ebf1d606 100644 > --- a/pack.h > +++ b/pack.h > @@ -94,7 +94,7 @@ off_t write_pack_header(struct hashfile *f, uint32_t); > void fixup_pack_header_footer(const struct git_hash_algo *, int, > unsigned char *, const char *, uint32_t, > unsigned char *, off_t); > -char *index_pack_lockfile(int fd, int *is_well_formed); > +char *index_pack_lockfile(struct repository *r, int fd, int *is_well_formed); > > struct ref;
Junio C Hamano <gitster@pobox.com> writes: > Karthik Nayak via B4 Relay > <devnull+karthik.188.gmail.com@kernel.org> writes: > >> From: Karthik Nayak <karthik.188@gmail.com> >> >> The `index_pack_lockfile()` function uses the global `the_repository` >> variable to access the repository. To avoid global variable usage, pass >> the repository from the layers above. >> >> Altough the layers above could have access to the hash function > > I do not think the choice of the hash algorithm has much to do with > this change, though ;-) > Oops, copy-paste error. Thanks for pointing out, will fix. [snip]
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 56347a79633505efe8dc05acf1583b4c9995eefe..b83abe5d220cefd3707b701409dc5e6b67566599 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -2304,7 +2304,7 @@ static const char *unpack(int err_fd, struct shallow_info *si) if (status) return "index-pack fork failed"; - lockfile = index_pack_lockfile(child.out, NULL); + lockfile = index_pack_lockfile(the_repository, child.out, NULL); if (lockfile) { pack_lockfile = register_tempfile(lockfile); free(lockfile); diff --git a/fetch-pack.c b/fetch-pack.c index 3a227721ed0935d1f9c40584c57f54043354c032..824f56ecbca11cd9e4da6a3e4c450c6b2e7078ab 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -1036,7 +1036,9 @@ static int get_pack(struct fetch_pack_args *args, die(_("fetch-pack: unable to fork off %s"), cmd_name); if (do_keep && (pack_lockfiles || fsck_objects)) { int is_well_formed; - char *pack_lockfile = index_pack_lockfile(cmd.out, &is_well_formed); + char *pack_lockfile = index_pack_lockfile(the_repository, + cmd.out, + &is_well_formed); if (!is_well_formed) die(_("fetch-pack: invalid index-pack output")); diff --git a/pack-write.c b/pack-write.c index fc887850dfb9789132b8642733c6472944dbe32d..0cd75d2e55419362a61cf981fc11117ea7a1d88a 100644 --- a/pack-write.c +++ b/pack-write.c @@ -460,10 +460,10 @@ void fixup_pack_header_footer(const struct git_hash_algo *hash_algo, fsync_component_or_die(FSYNC_COMPONENT_PACK, pack_fd, pack_name); } -char *index_pack_lockfile(int ip_out, int *is_well_formed) +char *index_pack_lockfile(struct repository *r, int ip_out, int *is_well_formed) { char packname[GIT_MAX_HEXSZ + 6]; - const int len = the_hash_algo->hexsz + 6; + const int len = r->hash_algo->hexsz + 6; /* * The first thing we expect from index-pack's output @@ -480,7 +480,7 @@ char *index_pack_lockfile(int ip_out, int *is_well_formed) packname[len-1] = 0; if (skip_prefix(packname, "keep\t", &name)) return xstrfmt("%s/pack/pack-%s.keep", - repo_get_object_directory(the_repository), name); + repo_get_object_directory(r), name); return NULL; } if (is_well_formed) diff --git a/pack.h b/pack.h index 6d9d477adc83e83d9e9175ccf699c100b4c147c6..46d85e5bec787c90af69700fd4b328b1ebf1d606 100644 --- a/pack.h +++ b/pack.h @@ -94,7 +94,7 @@ off_t write_pack_header(struct hashfile *f, uint32_t); void fixup_pack_header_footer(const struct git_hash_algo *, int, unsigned char *, const char *, uint32_t, unsigned char *, off_t); -char *index_pack_lockfile(int fd, int *is_well_formed); +char *index_pack_lockfile(struct repository *r, int fd, int *is_well_formed); struct ref;