Skip to content

Keep bare-repository worktrees non-bare - #2224

Merged
Byron merged 2 commits into
mainfrom
worktree-from-bare
Sep 1, 2026
Merged

Keep bare-repository worktrees non-bare#2224
Byron merged 2 commits into
mainfrom
worktree-from-bare

Conversation

@Byron

@Byron Byron commented Sep 1, 2026

Copy link
Copy Markdown
Member

Tasks

This section is for Byron only. Models continuing this PR must not add, remove, check, uncheck, rename, or reorder checkboxes here.

  • refackiew

Everything below this line was generated by Codex GPT-5.

Created by Codex on behalf of Byron. Byron will review before this is ready to merge.

Fixes #2223

Summary

  • Keep linked worktrees non-bare when their common repository has core.bare enabled.
  • Preserve the discovered working_tree_dir so index operations can use the checkout.
  • Add a regression test comparing Repo with native git rev-parse behavior.

Git reference

Git 2.50.1 reports the linked checkout as non-bare. The implementation was checked against Git source baseline 0bd5a6920d7c4238e0d90ddc0e7e08866e84a0f1, notably environment.c is_bare_repository() and setup.c check_repository_format_gently().

Commits

Validation

  • 12 focused repository-discovery/worktree tests passed.
  • 7 test_base.py tests passed.
  • Ruff check, Ruff format check, and codespell passed.
  • Full test_repo.py probe: 90 passed and 2 skipped; 4 unrelated host-state failures remain in tests that assume a master default branch, core.quotePath defaults, or no extra refs in the source repository.

Copilot AI lite review requested due to automatic review settings September 1, 2026 07:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes incorrect bare-repo detection when instantiating Repo from a linked worktree created off a bare common repository, ensuring working_tree_dir remains available for index operations and matching native git rev-parse behavior.

Changes:

  • Treat linked worktrees as non-bare even if the common repository has core.bare=true.
  • Preserve the discovered working_tree_dir for linked worktrees so operations like index.add() work.
  • Add a regression test asserting parity with git rev-parse --is-bare-repository and validating working_tree_dir.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
git/repo/base.py Adjusts bare-repo detection to keep linked worktrees non-bare when commondir indicates a linked worktree.
test/test_repo.py Adds a regression test covering Repo discovery from a worktree created from a bare repository.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread test/test_repo.py
<!-- agent -->
Opening a linked worktree created from a bare repository read `core.bare` from the
common repository and discarded the worktree path.

Keep a discovered linked worktree non-bare when its administrative directory has
a `commondir` marker. The regression compares Git rev-parse behavior and verifies
Repo.bare and working_tree_dir.

Git baseline: 0bd5a6920d7c4238e0d90ddc0e7e08866e84a0f1;
environment.c:is_bare_repository() and setup.c:check_repository_format_gently().
Git 2.50.1 reports the linked checkout as non-bare.

Assisted-by: GPT 5.6
Co-authored-by: GPT 5.6 <codex@openai.com>
Copilot AI review requested due to automatic review settings September 1, 2026 07:59
@Byron
Byron force-pushed the worktree-from-bare branch from 4a6b2f3 to 180b1ff Compare September 1, 2026 07:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings September 1, 2026 08:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings September 1, 2026 08:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

Copilot AI review requested due to automatic review settings September 1, 2026 08:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/cygwin-test.yml Outdated
Copilot AI review requested due to automatic review settings September 1, 2026 08:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@Byron
Byron force-pushed the worktree-from-bare branch from 137342f to 1a4c245 Compare September 1, 2026 09:27
<!-- agent -->
Cygwin patches ensurepip to load setuptools and pip wheels from
`/usr/share/python-wheels`. The rolling python-pip-wheel package advanced to pip
26.2.1, which requires Python 3.10 or newer, so every Python 3.9 venv creation
failed—including the installation test's nested virtual environment.

Keep the single Cygwin lane on Python 3.9 because the regular matrix already
covers Python 3.12 and newer. Install Cygwin's setuptools wheel, download pip
26.0.1 from its immutable PyPI URL into ensurepip's shared wheel directory,
verify its SHA-256 digest, and avoid upgrading pip. This fixes all venv creation
without relying on a version that may disappear from rolling Cygwin mirrors.

Assisted-by: GPT 5.6
Co-authored-by: GPT 5.6 <codex@openai.com>
@Byron
Byron force-pushed the worktree-from-bare branch from 1a4c245 to 0e8c23c Compare September 1, 2026 09:42
@Byron
Byron merged commit 1d47514 into main Sep 1, 2026
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Repo instantiated from a bare-repository worktree incorrectly sets bare = True

2 participants