[PATCH] [RFC][GSoC 2026] builtin/repo: avoid global state in get_layout_bare
From: Ayush Jha <hidden>
Date: 2026-02-06 15:20:16
Subsystem:
the rest · Maintainer:
Linus Torvalds
The get_layout_bare() function accepts a struct repository *repo argument but marks it UNUSED and instead relies on is_bare_repository(), which depends on global state. As bareness is a per-repository property, this causes the function to always report the status of the global repository, even when a specific repository instance is provided. This change computes the bare status using the passed-in repository instance (based on core.bare and the absence of a worktree), thereby removing the dependency on global state. This patch is sent as an RFC to solicit feedback on whether using repository-local state here is the preferred approach. Signed-off-by: Ayush Jha <redacted> --- builtin/repo.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/builtin/repo.c b/builtin/repo.c
index 0ea045abc1..b2619cc77c 100644
--- a/builtin/repo.c
+++ b/builtin/repo.c@@ -35,9 +35,12 @@ struct field { get_value_fn *get_value; }; -static int get_layout_bare(struct repository *repo UNUSED, struct strbuf *buf) +static int get_layout_bare(struct repository *repo, struct strbuf *buf) { - strbuf_addstr(buf, is_bare_repository() ? "true" : "false"); + int is_bare_cfg = -1; + repo_config_get_bool(repo, "core.bare", &is_bare_cfg); + + strbuf_addstr(buf, is_bare_cfg && !repo_get_work_tree(repo) ? "true" : "false"); return 0; }
--
2.53.0.windows.1