Skip to content

Conversation

@kevinburkesegment
Copy link

Git ratchet functionality failed in worktree directories with "Cannot find git repository in any parent directory" because JGit's RepositoryCache.FileKey.isGitRepository() doesn't properly recognize worktree git directories.

Worktrees have a different structure where some files (objects, refs, etc.) are shared via a commondir file pointing to the main repository. This commit adds a custom isGitRepository() method that detects worktrees by checking for the commondir file and validates them appropriately.

Also adds comprehensive test coverage for worktree support.

Fixes #2728

Please DO NOT FORCE PUSH. Don't worry about messy history, it's easier to do code review if we can tell what happened after the review, and force pushing breaks that.

Please make sure that your PR allows edits from maintainers. Sometimes it's faster for us to just fix something than it is to describe how to fix it.

Allow edits from maintainers

After creating the PR, please add a commit that adds a bullet-point under the [Unreleased] section of CHANGES.md, plugin-gradle/CHANGES.md, and plugin-maven/CHANGES.md which includes:

  • a summary of the change
  • either
    • a link to the issue you are resolving (for small changes)
    • a link to the PR you just created (for big changes likely to have discussion)

If your change only affects a build plugin, and not the lib, then you only need to update the plugin-foo/CHANGES.md for that plugin.

If your change affects lib in an end-user-visible way (fixing a bug, updating a version) then you need to update CHANGES.md for both the lib and all build plugins. Users of a build plugin shouldn't have to refer to lib to see changes that affect them.

This makes it easier for the maintainers to quickly release your changes :)

kevinburkesegment and others added 2 commits December 3, 2025 15:31
Git ratchet functionality failed in worktree directories with
"Cannot find git repository in any parent directory" because
JGit's RepositoryCache.FileKey.isGitRepository() doesn't properly
recognize worktree git directories.

Worktrees have a different structure where some files (objects,
refs, etc.) are shared via a commondir file pointing to the main
repository. This commit adds a custom isGitRepository() method
that detects worktrees by checking for the commondir file and
validates them appropriately.

Also adds comprehensive test coverage for worktree support.

Fixes diffplug#2728

Co-Authored-By: Claude <noreply@anthropic.com>
@mikelane
Copy link

I sure would love it if this was merged in. Any idea when it'll happen?

@Pankraz76

This comment was marked as spam.

@Goooler

This comment was marked as outdated.

@Pankraz76

This comment was marked as spam.

@Pankraz76

This comment was marked as abuse.

@nedtwigg
Copy link
Member

Happy to merge this, but the test failures in the maven tests seem to be real.

@mikelane
Copy link

Happy to merge this, but the test failures in the maven tests seem to be real.

Sorry if I stirred up any drama! That definitely wasn't my intent. I'd very much like this merged, but it doesn't seem useful to merge it with failing tests. So I'm okay to wait until it's all the way done.

I'd lend a hand, but honestly, it'd be vibe coded if I did. If you're okay with Gen AI contributions, I'll help out. Otherwise, I'll leave it to you all.

@kevinburkesegment
Copy link
Author

Let me see if I can resolve the Maven issues

@nedtwigg
Copy link
Member

Sorry if I stirred up any drama!

lol, not your fault at all. All is well. It's just a backburner project for many different people who have never met in person, sometimes stuff builds up without a face to face :). I represent the company that puts its name on the tin, so I have to review for security before anything goes in, so I end up being the choke point when I'm crunching (as I have been the past few months).

If you're okay with Gen AI contributions

Gen AI is welcome, but please run CI locally to before opening a PR. I don't care how the hot dog gets made, I just don't want a notification everytime a new intermediate step is taken.

@nedtwigg
Copy link
Member

As soon as this gets resolved I'll cut a release. If it doesn't get resolved by Friday the train will leave without it, but it's welcome on the next train.

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.

Git ratcheting causes exception to be thrown when using git worktrees

5 participants