Git development
 help / color / mirror / Atom feed
From: "Joy via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Patrick Steinhardt>" <ps@pks.im>,
	"Kristoffer Haugsbakk>" <kristofferhaugsbakk@fastmail.com>,
	"Christian Couder>" <christian.couder@gmail.com>,
	"Usman Akinyemi>" <usmanakinyemi202@gmail.com>,
	Joie Joie <soniqjjj@gmail.com>, Patrick Steinhardt <ps@pks.im>,
	Joy <soniqjjj@gmail.com>
Subject: [PATCH v3 0/2] [Outreachy] config: move pack size limit into repo config
Date: Tue, 03 Nov 2026 12:48:36 +0000	[thread overview]
Message-ID: <pull.2271.v3.git.1793710118.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2271.git.1792522587065.gitgitgadget@gmail.com>

This series moves pack.packsizelimit from a standalone global variable into
struct repo_config_values, as part of the ongoing effort to reduce Git's
reliance on global state and make its code easier to reuse as a library.

The series includes two patches:

 1. Update repo_config_values_init() to use memset() for
    zero-initialization, while keeping the defaults that require explicit
    values.
 2. Move the pack size limit into repo_config_values and update the relevant
    code to read it from there.


Changes since v1
================

Thanks to Patrick Steinhardt for reviewing the first version and suggesting
the initialization cleanup.

Following his feedback, I've:

 * Added a preparatory patch to simplify how repository configuration values
   are initialized.
 * Reworked the main commit message to explain the existing problem before
   describing the change.
 * Removed the need to explicitly initialize the new pack size limit field
   to zero.


Testing
=======

I built Git and ran the relevant configuration and pack-object tests:

 * make -j2 — passed.
 * t1300-config.sh — 518 successful tests.
 * t5300-pack-object.sh — 63 passed, 2 skipped, 0 failed.

Both test runs reported permission errors during cleanup after the tests had
completed.

Joy Gundu (2):
  repo: zero-initialize configuration values
  config: move pack size limit into repo config

 builtin/pack-objects.c |  2 +-
 environment.c          | 19 +++----------------
 environment.h          |  3 +--
 object-file.c          |  6 ++++--
 4 files changed, 9 insertions(+), 21 deletions(-)


base-commit: 47fdf2208c5b94c8cc01c106b8f7c85efb91c926
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2271%2FJoiejoie1%2Foutreachy%2Fglobal-state-mini-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2271/Joiejoie1/outreachy/global-state-mini-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/2271

Range-diff vs v2:

 1:  df93a2a86c ! 1:  dc18b66976 repo: zero-initialize configuration values
     @@ Metadata
       ## Commit message ##
          repo: zero-initialize configuration values
      
     +    When initializing struct repo_config_values, we explicitly initialize
     +    several members to zero or NULL. This adds unnecessary boilerplate as
     +    more configuration values are added to the structure.
     +
     +    Zero-initialize the entire structure with memset() instead, leaving
     +    only members with non-zero defaults to be initialized individually.
     +
          Signed-off-by: Joy Gundu <soniqjjj@gmail.com>
      
       ## environment.c ##
     @@ environment.c: int git_default_config(const char *var, const char *value,
       	cfg->has_symlinks = platform_has_symlinks();
      -	cfg->use_nanosec = 0;
       
     - 	/* section "sparse" config values */
     +-	/* section "sparse" config values */
      -	cfg->sparse_expect_files_outside_of_patterns = 0;
       
       	/* section "branch" config values */
 2:  05ae50b5da ! 2:  ba34e82a0a config: move pack size limit into repo config
     @@ environment.c: int git_default_config(const char *var, const char *value,
       		return 0;
       	}
       
     +@@ environment.c: void repo_config_values_init(struct repo_config_values *cfg)
     + 	cfg->trust_executable_bit = 1;
     + 	cfg->has_symlinks = platform_has_symlinks();
     + 
     +-
     + 	/* section "branch" config values */
     + 	cfg->branch_track = BRANCH_TRACK_REMOTE;
     + }
      
       ## environment.h ##
      @@ environment.h: struct repo_config_values {

-- 
gitgitgadget

  parent reply	other threads:[~2026-11-03 12:48 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-20 18:56 [PATCH] config: move pack size limit into repo config Joy via GitGitGadget
2026-10-20 19:02 ` Kristoffer Haugsbakk
2026-10-21  8:09 ` Patrick Steinhardt
2026-10-21 12:23   ` Joie Joie
2026-10-22  9:47 ` [PATCH v2 0/2] " Joy via GitGitGadget
2026-10-22  9:47   ` [PATCH v2 1/2] repo: zero-initialize configuration values Joy Gundu via GitGitGadget
2026-10-22 11:30     ` Patrick Steinhardt
2026-10-23 12:00       ` Joie Joie
2026-10-26  7:30         ` Patrick Steinhardt
2026-10-22  9:47   ` [PATCH v2 2/2] config: move pack size limit into repo config Joy Gundu via GitGitGadget
2026-10-22 11:30     ` Patrick Steinhardt
2026-10-22 11:30   ` [PATCH v2 0/2] " Patrick Steinhardt
2026-11-03 12:48 ` Joy via GitGitGadget [this message]
2026-11-03 12:48   ` [PATCH v3 1/2] repo: zero-initialize configuration values Joy Gundu via GitGitGadget
2026-11-03 12:48   ` [PATCH v3 2/2] config: move pack size limit into repo config Joy Gundu via GitGitGadget

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.2271.v3.git.1793710118.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=ps@pks.im \
    --cc=soniqjjj@gmail.com \
    --cc=usmanakinyemi202@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox