This is a small series to remove global variable usage from `pack-write.c`. Mostly it bubble's up the usage of global variables to upper layers. The only exception is in `write-midx.c`, which was cleaned of global variable usage, so there, we use the repo that is in available in the context. This series is based on fbe8d3079d (Git 2.48, 2025-01-10) with 'ps/more-sign-compare' and 'ps/the-repository' merged in. There are no conflicts with topics in 'next', however there is a conflict with 'tb/incremental-midx-part-2' in 'seen', the fix is simple but happy to merge that in too if necessary. Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> --- Changes in v2: - Fixes to the commit messages to: - Fix copy-paste error s/the_hash_algo/the_repository - Mention why certain functions are modified - Small cleanups - Link to v1: https://lore.kernel.org/r/20250116-kn-the-repo-cleanup-v1-0-a2f4c8e1c4c3@xxxxxxxxx --- Karthik Nayak (5): pack-write: pass hash_algo to `fixup_pack_header_footer()` pack-write: pass repository to `index_pack_lockfile()` pack-write: pass hash_algo to `write_idx_file()` pack-write: pass hash_algo to `write_rev_file()` pack-write: pass hash_algo to internal functions builtin/fast-import.c | 11 +++--- builtin/index-pack.c | 11 +++--- builtin/pack-objects.c | 12 +++--- builtin/receive-pack.c | 2 +- bulk-checkin.c | 7 ++-- fetch-pack.c | 4 +- midx-write.c | 4 +- pack-write.c | 99 +++++++++++++++++++++++++++----------------------- pack.h | 30 ++++++++++++--- 9 files changed, 106 insertions(+), 74 deletions(-) --- Range-diff versus v1: 1: 4e365523a5 = 1: ed4ba01c95 pack-write: pass hash_algo to `fixup_pack_header_footer()` 2: efa224f83b ! 2: 10aeaa5afc pack-write: pass repository to `index_pack_lockfile()` @@ Commit message 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 - 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. + Altough the layers above could have access to the repository internally, + simply pass in `the_repository`. 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@xxxxxxxxx> 3: 6cca689d32 ! 3: a4dbc3906d pack-write: pass hash_algo to `write_idx_file()` @@ Commit message to access the repository's hash function. To avoid global variable usage, pass the hash function from the layers above. + Since `stage_tmp_packfiles()` also resides in 'pack-write.c' and calls + `write_idx_file()`, update it to accept `the_hash_algo` as a parameter + and pass it through to the callee. + Altough the layers above could have access to the hash function internally, simply pass in `the_hash_algo`. This avoids any compatibility issues and bubbles up global variable usage to upper 4: b29eb6a305 ! 4: d06d8ee962 pack-write: pass hash_algo to `write_rev_file()` @@ Commit message The `write_rev_file()` function uses the global `the_hash_algo` variable to access the repository's hash function. To avoid global variable - usage, let's pass the hash function from the layers above. + usage, let's pass the hash function from the layers above. Also modify + children functions `write_rev_file_order()` and `write_rev_header()` to + accept 'the_hash_algo'. Altough the layers above could have access to the hash function internally, simply pass in `the_hash_algo`. This avoids any 5: 438bfec4de ! 5: 1e34f5a70c pack-write: pass hash_algo to `write_rev_*()` @@ Metadata Author: Karthik Nayak <karthik.188@xxxxxxxxx> ## Commit message ## - pack-write: pass hash_algo to `write_rev_*()` + pack-write: pass hash_algo to internal functions - The `write_rev_*()` functions use the global `the_hash_algo` variable to - access the repository's hash function. Pass the hash from down as we've - added made them available in the previous few commits. + The internal functions `write_rev_trailer()`, `write_rev_trailer()`, + `write_mtimes_header()` and write_mtimes_trailer()` use the global + `the_hash_algo` variable to access the repository's hash function. Pass + the hash from down as we've added made them available in the previous + few commits. + + This removes all global variables from the 'pack-write.c' file, so + remove the 'USE_THE_REPOSITORY_VARIABLE' macro. Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> --- base-commit: 8b2efc058aaa3d1437678616bccf7c5f7ce1f92b change-id: 20250110-kn-the-repo-cleanup-44144fa42dc3 Thanks - Karthik