* [PATCH] config: move pack size limit into repo config
@ 2026-10-20 18:56 Joy via GitGitGadget
2026-10-20 19:02 ` Kristoffer Haugsbakk
0 siblings, 1 reply; 2+ messages in thread
From: Joy via GitGitGadget @ 2026-10-20 18:56 UTC (permalink / raw)
To: git; +Cc: Usman Akinyemi>, Christian Couder>, Joy, Joy Gundu
From: Joy Gundu <soniqjjj@gmail.com>
Store the pack.packsizelimit value in repository configuration
rather than keeping it in a standalone global variable for the repository.
Update the configuration parser and pack-writing code to read
the value from repo_config_values rather than a global variable.
This change removes one piece of global configuration state from Git
and helps make Git code easier to reuse as a library component.
Signed-off-by: Joy Gundu <soniqjjj@gmail.com>
---
config: move pack size limit into repo config
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2271%2FJoiejoie1%2Foutreachy%2Fglobal-state-mini-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2271/Joiejoie1/outreachy/global-state-mini-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/2271
builtin/pack-objects.c | 2 +-
environment.c | 4 ++--
environment.h | 3 +--
object-file.c | 6 ++++--
4 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index af9390a46b..1c9044060d 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -5380,7 +5380,7 @@ int cmd_pack_objects(int argc,
if (!HAVE_THREADS && delta_search_threads != 1)
warning(_("no threads support, ignoring --threads"));
if (!pack_to_stdout && !pack_size_limit)
- pack_size_limit = pack_size_limit_cfg;
+ pack_size_limit = cfg->pack_size_limit;
if (pack_to_stdout && pack_size_limit)
die(_("--max-pack-size cannot be used to build a pack for transfer"));
if (pack_size_limit && pack_size_limit < 1024*1024) {
diff --git a/environment.c b/environment.c
index c83cf44839..e350d6949e 100644
--- a/environment.c
+++ b/environment.c
@@ -57,7 +57,6 @@ char *check_roundtrip_encoding;
#define OBJECT_CREATION_MODE OBJECT_CREATION_USES_HARDLINKS
#endif
int grafts_keep_true_parents;
-unsigned long pack_size_limit_cfg;
#ifndef PROTECT_HFS_DEFAULT
#define PROTECT_HFS_DEFAULT 0
@@ -728,7 +727,7 @@ int git_default_config(const char *var, const char *value,
}
if (!strcmp(var, "pack.packsizelimit")) {
- pack_size_limit_cfg = git_config_ulong(var, value, ctx->kvi);
+ cfg->pack_size_limit = git_config_ulong(var, value, ctx->kvi);
return 0;
}
@@ -768,6 +767,7 @@ void repo_config_values_init(struct repo_config_values *cfg)
cfg->check_stat = 1;
cfg->zlib_compression_level = Z_BEST_SPEED;
cfg->pack_compression_level = Z_DEFAULT_COMPRESSION;
+ cfg->pack_size_limit = 0;
cfg->precomposed_unicode = -1; /* see probe_utf8_pathname_composition() */
cfg->core_sparse_checkout_cone = 0;
cfg->warn_on_object_refname_ambiguity = 1;
diff --git a/environment.h b/environment.h
index b336459e90..070314f7ef 100644
--- a/environment.h
+++ b/environment.h
@@ -132,6 +132,7 @@ struct repo_config_values {
int check_stat;
int zlib_compression_level;
int pack_compression_level;
+ unsigned long pack_size_limit;
int precomposed_unicode;
int core_sparse_checkout_cone;
int warn_on_object_refname_ambiguity;
@@ -235,8 +236,6 @@ int have_git_dir(void);
/* Environment bits from configuration mechanism */
extern int minimum_abbrev, default_abbrev;
extern int assume_unchanged;
-extern unsigned long pack_size_limit_cfg;
-
extern int grafts_keep_true_parents;
const char *get_log_output_encoding(void);
diff --git a/object-file.c b/object-file.c
index 210984f825..3178bd6e65 100644
--- a/object-file.c
+++ b/object-file.c
@@ -885,6 +885,8 @@ static int odb_transaction_files_write_object_stream(struct odb_transaction *bas
struct odb_transaction_files,
base);
struct transaction_packfile *state = &transaction->packfile;
+ struct repo_config_values *cfg =
+ repo_config_values(the_repository);
struct git_hash_ctx ctx;
unsigned char obuf[16384];
unsigned header_len;
@@ -906,8 +908,8 @@ static int odb_transaction_files_write_object_stream(struct odb_transaction *bas
* the difference between the inflated and on-disk size is limited
* to zlib compression and is sufficient for this check.
*/
- if (state->nr_written && pack_size_limit_cfg &&
- pack_size_limit_cfg < state->offset + stream->size) {
+ if (state->nr_written && cfg->pack_size_limit &&
+ cfg->pack_size_limit < state->offset + stream->size) {
flush_packfile_transaction(transaction);
odb_reprepare(transaction->base.source->odb);
}
base-commit: c51408889c3b372814bc20b9431c3b74d0d268eb
--
gitgitgadget
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] config: move pack size limit into repo config
2026-10-20 18:56 [PATCH] config: move pack size limit into repo config Joy via GitGitGadget
@ 2026-10-20 19:02 ` Kristoffer Haugsbakk
0 siblings, 0 replies; 2+ messages in thread
From: Kristoffer Haugsbakk @ 2026-10-20 19:02 UTC (permalink / raw)
To: Thomas Bachem, git; +Cc: Usman Akinyemi, Christian Couder, Joy
On Tue, Oct 20, 2026, at 20:56, Joy via GitGitGadget wrote:
> From: Joy Gundu <soniqjjj@gmail.com>
>
> [...]
>
> This change removes one piece of global configuration state from Git
> and helps make Git code easier to reuse as a library component.
It's nice to see a paragraph explaining the
overall project in plain terms. Not just
"we are getting rid of globals" or "this is
libification".
>
> Signed-off-by: Joy Gundu <soniqjjj@gmail.com>
> [...]
Sent from mobile
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-20 19:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-20 18:56 [PATCH] config: move pack size limit into repo config Joy via GitGitGadget
2026-10-20 19:02 ` Kristoffer Haugsbakk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox