From: Tian Yuchen <a3205153416@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, phillip.wood@dunelm.org.uk
Subject: [PATCH v3 0/3] environment: move encoding configs to struct repository
Date: Mon, 2 Mar 2026 04:35:36 +0800 [thread overview]
Message-ID: <20260301203539.1421152-1-a3205153416@gmail.com> (raw)
In-Reply-To: <20260228040727.2057192-1-a3205153416@gmail.com>
This is v3 of the series aimed at reducing the global state associated with
'git_commit_encoding' and 'git_log_output_encoding'.
Changes since v2:
Based on the invaluable feedback from Phillip Wood, the architectural
approach has been fundamentally adjusted. In v2, I attempted to migrate
these variables into 'struct repo_settings'. However, since these are
eagerly parsed user preferences, deferring them to lazy evaluation broke
early validation.
In this v3 series, the variables are migrated directly into 'struct repository'.
According to the thread Phillip Wood shared, plumbing the repository pointer
safely through the 'git_default_config' callback machinery is highly
invasive. Many top-level callers pass custom structs via the 'void *cb' pointer
so that blindly casting 'cb' to 'struct repository *' results in weird bugs (at
least I can't fix them all in one single patch)
Therefore:
1. The variables are parsed directly into 'the_repository' during config
parsing to maintain eager validation.
2. However, the entire read/write paths (commit creation and log APIs) are
fully plumbed to accept any 'struct repository' instance.
Future efforts to libify the config machinery itself will only need to update
the parser, as the core APIs are now context-aware.
Tian Yuchen (3):
commit: plumb 'struct repository' into commit creation APIs
pretty: plumb 'struct repository' into pretty-print APIs
environment: migrate encoding configs to struct repository
builtin/am.c | 6 +++---
builtin/blame.c | 2 +-
builtin/checkout.c | 4 ++--
builtin/commit-tree.c | 2 +-
builtin/commit.c | 8 ++++----
builtin/history.c | 2 +-
builtin/log.c | 4 ++--
builtin/mailinfo.c | 6 +++---
builtin/merge.c | 6 +++---
builtin/rebase.c | 2 +-
builtin/reset.c | 2 +-
builtin/rev-list.c | 4 ++--
builtin/shortlog.c | 4 ++--
builtin/show-branch.c | 2 +-
builtin/stash.c | 12 ++++++------
bundle.c | 4 ++--
commit.c | 20 ++++++++++----------
commit.h | 4 ++--
environment.c | 19 ++++++++-----------
environment.h | 7 ++-----
log-tree.c | 6 +++---
notes-cache.c | 2 +-
notes-utils.c | 2 +-
pretty.c | 8 ++++----
pretty.h | 4 ++--
range-diff.c | 2 +-
remote-curl.c | 2 +-
replay.c | 4 ++--
repository.c | 2 ++
repository.h | 5 +++++
revision.c | 10 +++++-----
sequencer.c | 32 ++++++++++++++++----------------
submodule.c | 2 +-
33 files changed, 101 insertions(+), 100 deletions(-)
--
2.43.0
next prev parent reply other threads:[~2026-03-01 20:35 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-28 4:07 [PATCH v1] environment: migrate encoding settings to repo-settings Tian Yuchen
2026-02-28 19:01 ` [PATCH v2 0/3] migrate encoding settings and bubble up repository Tian Yuchen
2026-02-28 19:01 ` [PATCH v2 1/3] environment: migrate encoding settings to repo-settings Tian Yuchen
2026-02-28 19:02 ` [PATCH v2 2/3] commit: pass 'struct repository' to commit creation APIs Tian Yuchen
2026-02-28 19:02 ` [PATCH v2 3/3] pretty: pass 'struct repository' to pretty_print_commit() Tian Yuchen
2026-03-01 20:35 ` Tian Yuchen [this message]
2026-03-01 20:35 ` [PATCH v3 1/3] commit: plumb 'struct repository' into commit creation APIs Tian Yuchen
2026-03-01 20:35 ` [PATCH v3 2/3] pretty: plumb 'struct repository' into pretty-print APIs Tian Yuchen
2026-03-01 20:35 ` [PATCH v3 3/3] environment: migrate encoding configs to struct repository Tian Yuchen
2026-03-02 8:57 ` [PATCH v4 0/3] move encoding configs to repo_config_values() Tian Yuchen
2026-03-02 8:57 ` [PATCH v4 1/3] commit: plumb 'struct repository' into commit creation APIs Tian Yuchen
2026-03-02 8:57 ` [PATCH v4 2/3] pretty: plumb 'struct repository' into pretty-print APIs Tian Yuchen
2026-03-02 8:57 ` [PATCH v4 3/3] environment: migrate encoding configs to repo_config_values() Tian Yuchen
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=20260301203539.1421152-1-a3205153416@gmail.com \
--to=a3205153416@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=phillip.wood@dunelm.org.uk \
/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