worktree: reject NULL worktree in get_worktree_git_dir()

This removes the final dependence on "the_repository" in get_worktree_git_dir(). The last commit removed only caller that passed a NULL worktree. get_worktree_git_dir() has the following callers: - branch.c:prepare_checked_out_branches() which loops over all worktrees. - builtin/fsck.c:cmd_fsck() which loops over all worktrees. - builtin/receive-pack.c:update_worktree() which is called from update() only when "worktree" is non-NULL. - builtin/worktree.c:validate_no_submodules() which is called from check_clean_worktree() and move_worktree(), both of which supply a non-NULL worktree. - reachable.c:add_rebase_files() which loops over all worktrees. - revision.c:add_index_objects_to_pending() which loops over all worktrees. - worktree.c:is_current_worktree() which expects a non-NULL worktree. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Phillip Wood committed Mar 26, 2026 at 14:16 UTC 758086869940c96585f05a0eefe6d2f24fd70630
2 files changed +1 -2
worktree.c
+1 -1
@@ -227,7 +227,7 @@ struct worktree **get_worktrees_without_reading_head(void)
227 char *get_worktree_git_dir(const struct worktree *wt)
228 {
229 if (!wt)
230 - return xstrdup(repo_get_git_dir(the_repository));
230 + BUG("%s() called with NULL worktree", __func__);
231 else if (!wt->id)
232 return xstrdup(repo_get_common_dir(wt->repo));
233 else
worktree.h
-1
@@ -51,7 +51,6 @@ int submodule_uses_worktrees(const char *path);
51
52 /*
53 * Return git dir of the worktree. Note that the path may be relative.
54 - * If wt is NULL, git dir of current worktree is returned.
54 */
55 char *get_worktree_git_dir(const struct worktree *wt);
56