Skip to content

Conversation

@druckdev
Copy link

@druckdev druckdev commented Aug 6, 2025

Previously, tags were not detected when they were checked out in a separate linked worktree. This occurred because gitstatus tried to read from refs/tags relative to the worktree-specific .git directory. However, since tags are shared refs, refs/tags will never exist there, but rather in the global git-dir (see the "REFS" section in git-worktree(1)).

To fix this, remove the worktrees/* suffix from the repository path when needed.


To reproduce this issue:

$ git clone https://github.com/romkatv/gitstatus
$ cd gitstatus
$ worktree="$(mktemp -d)"
$ git worktree add "$worktree" v1.5.5
$ cd "$worktree"
$ typeset -m VCS_STATUS_TAG
VCS_STATUS_TAG=''
$ git describe --tags --exact-match
v1.5.5

Previously, tags were not detected when they were checked out in a
separate linked worktree. This occurred because gitstatus tried to read
from `refs/tags` relative to the worktree-specific `.git` directory.
However, since tags are shared refs, `refs/tags` will never exist there,
but rather in the global git-dir (see the "REFS" section in
git-worktree(1)).

To fix this, remove the `worktrees/*` suffix from the repository path
when needed.
@druckdev druckdev force-pushed the pr467-tags-in-worktrees branch from eb5e8d9 to a7f654e Compare August 6, 2025 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant