Skip to content

Commit 26bb543

Browse files
committed
Merge branch 'rs/worktree-list-show-locked'
"git worktree list" now shows if each worktree is locked. This possibly may open us to show other kinds of states in the future. * rs/worktree-list-show-locked: worktree: teach `list` to annotate locked worktree
2 parents ae84e92 + c57b336 commit 26bb543

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

Documentation/git-worktree.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ list::
9696

9797
List details of each working tree. The main working tree is listed first,
9898
followed by each of the linked working trees. The output details include
99-
whether the working tree is bare, the revision currently checked out, and the
100-
branch currently checked out (or "detached HEAD" if none).
99+
whether the working tree is bare, the revision currently checked out, the
100+
branch currently checked out (or "detached HEAD" if none), and "locked" if
101+
the worktree is locked.
101102

102103
lock::
103104

builtin/worktree.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -676,8 +676,11 @@ static void show_worktree(struct worktree *wt, int path_maxlen, int abbrev_len)
676676
} else
677677
strbuf_addstr(&sb, "(error)");
678678
}
679-
printf("%s\n", sb.buf);
680679

680+
if (!is_main_worktree(wt) && worktree_lock_reason(wt))
681+
strbuf_addstr(&sb, " locked");
682+
683+
printf("%s\n", sb.buf);
681684
strbuf_release(&sb);
682685
}
683686

t/t2402-worktree-list.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,16 @@ test_expect_success '"list" all worktrees --porcelain' '
6161
test_cmp expect actual
6262
'
6363

64+
test_expect_success '"list" all worktress with locked annotation' '
65+
test_when_finished "rm -rf locked unlocked out && git worktree prune" &&
66+
git worktree add --detach locked master &&
67+
git worktree add --detach unlocked master &&
68+
git worktree lock locked &&
69+
git worktree list >out &&
70+
grep "/locked *[0-9a-f].* locked$" out &&
71+
! grep "/unlocked *[0-9a-f].* locked$" out
72+
'
73+
6474
test_expect_success 'bare repo setup' '
6575
git init --bare bare1 &&
6676
echo "data" >file1 &&

0 commit comments

Comments
 (0)