gradle-git-version icon indicating copy to clipboard operation
gradle-git-version copied to clipboard

Git root dir does not work for worktrees

Open blakehurlburt opened this issue 2 years ago • 3 comments

When using a worktree, gradle tasks run into the following error:

java.nio.file.FileSystemException: <worktree directory>/.git/config: Not a directory
        at com.palantir.gradle.gitversion.GitVersionPlugin.gitRepo(GitVersionPlugin.java:73)
        at com.palantir.gradle.gitversion.GitVersionPlugin.apply(GitVersionPlugin.java:36)
        at com.palantir.gradle.gitversion.GitVersionPlugin.apply(GitVersionPlugin.java:29)

Similar for

java.nio.file.FileSystemException: <worktree directory>/.git/refs/HEAD: Not a directory
        at com.palantir.gradle.gitversion.VersionDetailsImpl.isRepoEmpty(VersionDetailsImpl.java:102)
        at com.palantir.gradle.gitversion.VersionDetailsImpl.expensiveComputeRawDescription(VersionDetailsImpl.java:74)
        at com.palantir.gradle.gitversion.VersionDetailsImpl.description(VersionDetailsImpl.java:67)
        at com.palantir.gradle.gitversion.VersionDetailsImpl.getVersion(VersionDetailsImpl.java:47)

        at com.palantir.gradle.gitversion.VersionDetailsImpl.isRepoEmpty(VersionDetailsImpl.java:102)
        at com.palantir.gradle.gitversion.VersionDetailsImpl.expensiveComputeRawDescription(VersionDetailsImpl.java:74)
        at com.palantir.gradle.gitversion.VersionDetailsImpl.description(VersionDetailsImpl.java:67)
        at com.palantir.gradle.gitversion.VersionDetailsImpl.getVersion(VersionDetailsImpl.java:47)

https://github.com/palantir/gradle-git-version/blob/26eada382f2327290424e8ebc0c5b1fe818325e6/src/main/java/com/palantir/gradle/gitversion/GitVersionPlugin.java#L87-L101

This seems to assume the .git file in the repo is always a git dir, which is not true for worktrees.

The correct solution is to use the command git rev-parse --git-dir for the worktree-specific git dir, and git rev-parse --git-common-dir for the shared git dir for all worktrees in the checkout.

blakehurlburt avatar Feb 11 '22 20:02 blakehurlburt

I am observing the same issue! Is there a workaround for this ?

drgeb avatar Mar 02 '22 20:03 drgeb

This exact issue happens using git submodules: https://git-scm.com/book/en/v2/Git-Tools-Submodules

I imagine it's related to worktrees as well having .git files with references to the parent .git folder. I was having a hard time with the difference in naming.

vokiel-too avatar Mar 21 '22 02:03 vokiel-too