Skip to content

Fix git worktree popup popup no worktree when opened in a project (#55053) (cherry-pick to preview)#55790

Merged
maxbrunsfeld merged 1 commit intov1.1.xfrom
cherry-pick-v1.1.x-358d88d0
May 5, 2026
Merged

Fix git worktree popup popup no worktree when opened in a project (#55053) (cherry-pick to preview)#55790
maxbrunsfeld merged 1 commit intov1.1.xfrom
cherry-pick-v1.1.x-358d88d0

Conversation

@zed-zippy
Copy link
Copy Markdown
Contributor

@zed-zippy zed-zippy Bot commented May 5, 2026

Cherry-pick of #55053 to preview


Summary

Fixes the git: worktree popup showing no worktrees when a project is
opened at the parent of a .bare directory (the common
bare-clone-with-sibling-worktrees layout).

What's fixed

  • crates/git/src/repository.rs

  • New git_binary_for_worktree_list helper that uses
    repository.path() as the working directory when workdir() is None.

    • worktrees() switched to the new helper.
  • parse_worktrees_from_str accepts bare entries without a HEAD line.

  • Tests

  • Unit test: parser handles a bare entry with no HEAD followed by a
    normal worktree entry.

  • Integration test: full .git-file → .bare + sibling worktrees
    layout (main, feature-a, feature-b) is listed correctly via the
    real git binary.

UI rendering already gates on empty sha (worktree_picker.rs uses
.when(!sha.is_empty(), ...)), so the bare entry's empty sha renders
without artifacts.

Self-Review Checklist:

  • I've reviewed my own diff for quality, security, and reliability
  • Unsafe blocks (if any) have justifying comments — N/A, no unsafe
  • The content is consistent with the UI/UX
    checklist
  • Tests cover the new/changed behavior
  • Performance impact has been considered and is acceptable — same
    single git worktree list --porcelain invocation, no extra work

Closes #54824

Video

Screencast.from.2026-04-28.09-43-45.webm

Release Notes:

  • Fixed the git: worktree popup listing no worktrees when a project
    was opened at the parent of a .bare directory
    (bare-clone-with-sibling-worktrees layout).

Co-authored-by: Max Brunsfeld maxbrunsfeld@gmail.com

…5053)

## Summary

Fixes the `git: worktree` popup showing no worktrees when a project is
opened at the parent of a `.bare` directory (the common
bare-clone-with-sibling-worktrees layout).

## What's fixed

- `crates/git/src/repository.rs`
- New `git_binary_for_worktree_list` helper that uses
`repository.path()` as the working directory when `workdir()` is `None`.
  - `worktrees()` switched to the new helper.
- `parse_worktrees_from_str` accepts bare entries without a `HEAD` line.
  
- Tests
- Unit test: parser handles a bare entry with no `HEAD` followed by a
normal worktree entry.
- Integration test: full `.git`-file → `.bare` + sibling worktrees
layout (`main`, `feature-a`, `feature-b`) is listed correctly via the
real `git` binary.

UI rendering already gates on empty sha (`worktree_picker.rs` uses
`.when(!sha.is_empty(), ...)`), so the bare entry's empty sha renders
without artifacts.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments — N/A, no `unsafe`
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable — same
single `git worktree list --porcelain` invocation, no extra work

#### Closes #54824

Video 

[Screencast from 2026-04-28
09-43-45.webm](https://github.com/user-attachments/assets/e414d546-eb61-4cb2-857e-3c392f416f96)


Release Notes:

- Fixed the `git: worktree` popup listing no worktrees when a project
was opened at the parent of a `.bare` directory
(bare-clone-with-sibling-worktrees layout).

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
@cla-bot cla-bot Bot added the cla-signed The user has signed the Contributor License Agreement label May 5, 2026
@zed-community-bot zed-community-bot Bot added the bot Pull requests authored by a bot label May 5, 2026
@maxbrunsfeld maxbrunsfeld enabled auto-merge (squash) May 5, 2026 15:47
@maxbrunsfeld maxbrunsfeld merged commit 2e32578 into v1.1.x May 5, 2026
39 checks passed
@maxbrunsfeld maxbrunsfeld deleted the cherry-pick-v1.1.x-358d88d0 branch May 5, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot Pull requests authored by a bot cla-signed The user has signed the Contributor License Agreement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants