The output of `worktree list` command is extended to mark a locked worktree with `(locked)` text. This is used to communicate to the user that a linked worktree is locked instead of learning only when attempting to remove it. This is the output of the worktree list with locked marker: $ git worktree list /repo/to/main abc123 [master] /path/to/unlocked-worktree1 456def [brancha] /path/to/locked-worktree 123abc (detached HEAD) (locked) Signed-off-by: Rafael Silva <rafaeloliveira.cs@xxxxxxxxx> --- Documentation/git-worktree.txt | 5 +++-- builtin/worktree.c | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt index 32e8440cde..a3781dd664 100644 --- a/Documentation/git-worktree.txt +++ b/Documentation/git-worktree.txt @@ -96,8 +96,9 @@ list:: List details of each working tree. The main working tree is listed first, followed by each of the linked working trees. The output details include -whether the working tree is bare, the revision currently checked out, and the -branch currently checked out (or "detached HEAD" if none). +whether the working tree is bare, the revision currently checked out, the +branch currently checked out (or "detached HEAD" if none), and whether +the worktree is locked. lock:: diff --git a/builtin/worktree.c b/builtin/worktree.c index 99abaeec6c..8ad2cdd2f9 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -676,8 +676,12 @@ static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len) } else strbuf_addstr(&sb, "(error)"); } - printf("%s\n", sb.buf); + if (!is_main_worktree(wt) && + worktree_lock_reason(wt)) + strbuf_addstr(&sb, " (locked)"); + + printf("%s\n", sb.buf); strbuf_release(&sb); } -- 2.28.0.763.ge7086f1eef