gradle-git-version
gradle-git-version copied to clipboard
Git root dir does not work for worktrees
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.
I am observing the same issue! Is there a workaround for this ?
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.