From: Tian Yuchen Date: Sat, 28 Feb 2026 19:01:58 GMT Subject: [PATCH v2 0/3] migrate encoding settings and bubble up repository Message-ID: <20260228190201.3684705-1-a3205153416@gmail.com> In-Reply-To: <20260228040727.2057192-1-a3205153416@gmail.com> Hi everyone, As part of the ongoing libification effort and my GSoC 2026 proposal, this series migrates commit and log encoding settings into 'struct repo_settings' and bubbles up the 'struct repository *' dependency. Previously, 'git_commit_encoding' and 'git_log_output_encoding' were global, where core APIs implicitly rely on 'the_repository'. This series resolves this in three steps: - Patch 1: Moves encoding configs into 'repo_settings' using lazy -loading, safely handling CLI overrides in 'revision.c'. - Patch 2: Updates 'commit_tree()' and related APIs in 'commit.c' to accept a repository context, passing it down the call chain. - Patch 3: Updates 'pretty_print_commit()' and 'pp_commit_easy()'. We leverage existing contextual pointers ('diffopt->repo' and 'revs->repo') to pass the repository downwards. To maintain a clean boundary, leaf callers in 'builtin/' and top-level components (e.g., 'bundle.c') fall back to 'the_repository'. (Though series passes the full test suite and is verified with 'S ANITIZE=address,undefined', I'm quite certain I must have inadvertently left out some parts. Therefore, this patch series is currently more of a self-archival exercise than a final submission. For example, I might have left out some of the exsiting contextual pointers in patch 2. Will check in the following days.) Regards, Yuchen Tian Yuchen (3): environment: migrate encoding settings to repo-settings commit: pass 'struct repository' to commit creation APIs pretty: pass 'struct repository' to pretty_print_commit() 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 | 2 +- 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 | 31 +++++++++++++++++-------------- commit.h | 6 ++++-- diff.c | 2 +- environment.c | 37 +++++++++++-------------------------- environment.h | 7 ++----- log-tree.c | 6 +++--- notes-cache.c | 4 ++-- notes-cache.h | 2 +- notes-utils.c | 2 +- pretty.c | 13 +++++++------ pretty.h | 4 ++-- range-diff.c | 10 +++++----- remote-curl.c | 3 ++- replay.c | 4 ++-- repo-settings.c | 7 +++++++ repo-settings.h | 3 +++ revision.c | 11 ++++++----- sequencer.c | 36 ++++++++++++++++++------------------ submodule.c | 2 +- 35 files changed, 128 insertions(+), 128 deletions(-) -- 2.43.0