diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-10-27 15:09:47 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-10-27 15:09:47 -0700 |
commit | 26bb5437f6defed72996b6a2bb1ff9121ec297ff (patch) | |
tree | 49ff7b4d03f4d7b447a5575845491b764ba376c2 | |
parent | Merge branch 'rs/tighten-callers-of-deref-tag' (diff) | |
parent | worktree: teach `list` to annotate locked worktree (diff) | |
download | tgif-26bb5437f6defed72996b6a2bb1ff9121ec297ff.tar.xz |
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
-rw-r--r-- | Documentation/git-worktree.txt | 5 | ||||
-rw-r--r-- | builtin/worktree.c | 5 | ||||
-rwxr-xr-x | t/t2402-worktree-list.sh | 10 |
3 files changed, 17 insertions, 3 deletions
diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt index 32e8440cde..af06128cc9 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 "locked" if +the worktree is locked. lock:: diff --git a/builtin/worktree.c b/builtin/worktree.c index 99abaeec6c..ce56fdaaa9 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -676,8 +676,11 @@ 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); } diff --git a/t/t2402-worktree-list.sh b/t/t2402-worktree-list.sh index 52585ec2aa..b85bd2655d 100755 --- a/t/t2402-worktree-list.sh +++ b/t/t2402-worktree-list.sh @@ -61,6 +61,16 @@ test_expect_success '"list" all worktrees --porcelain' ' test_cmp expect actual ' +test_expect_success '"list" all worktress with locked annotation' ' + test_when_finished "rm -rf locked unlocked out && git worktree prune" && + git worktree add --detach locked master && + git worktree add --detach unlocked master && + git worktree lock locked && + git worktree list >out && + grep "/locked *[0-9a-f].* locked$" out && + ! grep "/unlocked *[0-9a-f].* locked$" out +' + test_expect_success 'bare repo setup' ' git init --bare bare1 && echo "data" >file1 && |