Subject: Re: [PATCH v3 1/3] worktree: remove "the_repository" from is_current_worktree()

From: Phillip Wood <[email-masked]>
Date: Thu, 2 Apr 2026 16:10:24 +0100

On 27/03/2026 17:07, Junio C Hamano wrote:
> Phillip Wood <[email-masked]> writes> 
>> On 26/03/2026 15:48, Junio C Hamano wrote:
> 
> I _think_ what I am frustrated about is the lack of description on
> "what it means to be the worktree among many that is pointed by via
> the .worktree member in the repository struct".  Does it correspond to
> the worktree being "the current worktree the codepath is working on?"

Yes

>>> The function's comment in <worktree.h> talks only at the
>>> implementation level "construct a worktree struct from repo->gitdir
>>> and repo->worktree" as if it is so obvious what the resulting
>>> worktree struct means at a higher layer's point of view, which does
>>> not help, either.
>>
>> That comes from me thinking of a struct repository as referring to a
>> specific worktree - would calling it
>> "get_worktree_from_repository_instance" be clearer?
> 
> It does not change the descriptive value of the name in any
> meaningful way, so let's not do that.  If the answer to my "what
> frustrates me" comment above is "yeah, we are getting the current
> worktree", then renaming the function to include "current" in its
> name would add descriptive value vastly, though.

That's a good idea, I'll send a patch to rename 
get_worktree_from_repository() to get_current_worktree()

>> I feel I'm struggling to explain this clearly - I find this whole
>> discussion gets confusing because we have "struct worktree" and also a
>> "worktree" member of "struct repository" which means a "struct
>> repository" instance is tied to a specific worktree within the
>> repository. If "struct repository" only had a "commondir" member and no
>> "gitdir" or "worktree" members and we instead used "sturct worktree" to
>> refer to a specific worktree within a repository with functions like
>>
>> 	worktree_get_oid(wt, "HEAD", &oid);
>>
>> instead of
>>
>> 	repo_get_oid(repo, "HEAD", &oid);
>>
>> it might be clearer but that would be a very big change.
> 
> In short, am I hearing the worktree subsystem is not conceptually
> clean and it would be a huge undertaking to clean it up?

Yes, we mostly use "struct repository" to operate on the current 
worktree but sometimes we need a "struct worktree" instead.

Thanks

Phillip