Open rogpeppe opened 1 year ago
CC @bcmills @matloob
Does this reproduce with earlier releases?
It does; I have a fix ready. It's a rather simple one, we were just assuming that .git
was always a directory in -buildvcs=auto
.
Change https://go.dev/cl/463849 mentions this issue: cmd/go: support git worktree checkouts in -buildvcs=auto
As mentioned in #58978 and #59068, this issue also affects work trees inside bare Git repositories where running git status --porcelain
fails since it must be run in a work tree. That is, go build
with VCS stamping (including auto
mode) fails in such setup.
.git
, which is currently only allowed to be a directory..git
directory from the bare repository (see also git config core.bare
).git status
there, outside of the work tree.Change https://go.dev/cl/480635 mentions this issue: cmd/gomote: don't push .git even if it is a file
Thanks for the start of the patch process @mvdan. I looked at the thread there, and I'm not sure what the remaining work is. Is the ask for a revert of the original logic change that broke worktrees with a regression test?
@cehoffman, hi, I don’t think there is any work to do here aside from getting CL 463849 rebased, reviewed and merged, ideally also backported to stable release.
I’ve also added comments with regression test suggestions for my particular use case (i.e. bare Git repository with work trees), but that shouldn’t be that different from the regression test already present in the CL.
I’ve been using Go toolchain with GOFLAGS=-buildvcs=false
because of this issue, so I’d appreciate if it finally gets resolved 😅
The discussion in https://go.dev/cl/463849 seems to be stalled. Does anyone know what's the state of this?
@mvdan Do you have context on this? Did you send out a fix with regression test?
I didn't do anything beyond https://go-review.googlesource.com/c/go/+/463849; writing the git worktree test and doing the revert is somewhere on my TODO list. I honestly don't use git worktrees at the moment so it's not my top priority. I'm happy for someone else to do this and I'll close my CL.
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
Run
testscript
on the following file:What did you expect to see?
A successful test.
What did you see instead?
The binary built in a git worktree directory does not contain VCS information. I suspect the logic doesn't understand that
.git
can be a file was well as a directory.