The main worktree should not be locked and the worktree_lock_reason() API is aware of this fact and avoids running the check code for the main worktree. This checks is done via assert() macro, Therefore the caller needs to ensure the function is never called, usually by additional code. We can handle that case more gently by just returning false for the main worktree and not bother checking if the "locked" file exists. This will allowed further simplification from the caller as they will not need to ensure the main worktree is never passed to the API. Teach worktree_lock_reason() to be more gently and just return false for the main working tree. Signed-off-by: Rafael Silva <rafaeloliveira.cs@xxxxxxxxx> --- worktree.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/worktree.c b/worktree.c index ee14db3ab5..78be83ba16 100644 --- a/worktree.c +++ b/worktree.c @@ -225,9 +225,7 @@ int is_main_worktree(const struct worktree *wt) const char *worktree_lock_reason(struct worktree *wt) { - assert(!is_main_worktree(wt)); - - if (!wt->lock_reason_valid) { + if (!is_main_worktree(wt) && !wt->lock_reason_valid) { struct strbuf path = STRBUF_INIT; strbuf_addstr(&path, worktree_git_path(wt, "locked")); -- 2.30.0.391.g469bf2a980