]> Kevux Git Server - rit/commit
wt-status: avoid passing NULL worktree
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 19 Feb 2026 14:26:32 +0000 (14:26 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 19 Feb 2026 19:03:23 +0000 (11:03 -0800)
commitcb18484385eb66f6220d2418d62ad790358899d1
treec393a837c65240e6aa36feb8445e58d6e93626e1
parent67ad42147a7acc2af6074753ebd03d904476118f
wt-status: avoid passing NULL worktree

In preparation for removing the repository argument from
worktree_git_path() add a function to construct a "struct worktree"
from a "struct repository" using its "gitdir" and "worktree"
members. This function is then used to avoid passing a NULL worktree to
wt_status_check_bisect() and wt_status_check_rebase(). In general the
"struct worktree" returned may not correspond to the "current" worktree
defined by is_current_worktree() as that function uses "the_repository"
rather than "wt->repo" when deciding which worktree is "current". In
practice the "struct repository" we pass corresponds to "the_repository"
as we only ever operate on a single repository at the moment.

wt_status_check_bisect() and wt_status_check_rebase() have the following
callers:

 - branch.c:prepare_checked_out_branches() which loops over all
   worktrees.

 - worktree.c:is_worktree_being_rebased() which is called from
   builtin/branch.c:reject_rebase_or_bisect_branch() that loops over all
   worktrees and worktree.c:is_shared_symref() which dereferences wt
   earlier in the function.

 - wt-status:wt_status_get_state() which is updated to avoid passing a
   NULL worktree by this patch.

This updates the only callers that pass a NULL worktree to
worktree_git_path(). A new test is added to check that "git status"
detects a rebase in a linked worktree.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7512-status-help.sh
worktree.c
worktree.h
wt-status.c