Hi there,

Hoping someone here has a good workaround.  Used godep w/ vendor in the 
past, so this new ground for me.

tl;dr
Can I pass the git archive flag --worktree-attributes to go mod commands or 
go get?

### What version of Go are you using (`go version`)?

go version go1.11 darwin/amd64

### Does this issue reproduce with the latest release?

Yes

### What operating system and processor architecture are you using (`go 
env`)?

GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/alexbarry/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/alexbarry/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.11/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.11/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments 
-fmessage-length=0 
-fdebug-prefix-map=/var/folders/cd/2sl0rxtn7y9bvdgyj8z7w6c80000gp/T/go-build922194055=/tmp/go-build
 
-gno-record-gcc-switches -fno-common"

### What did you do?

I'm using go modules and trying to import a repo that uses git-lfs to 
handle large binary files. I have a .lfsconfig file in the root of the repo 
with fetchexclude = * to avoid pulling the large files on clone. It works 
fine with a regular git clone or fetch, the files are not downloaded. 
However, when I try to import packages from this go module into another go 
module in another repo and go build, there are several issues.

### What did you expect to see?

I expected go build to download the packages and build successfully.

### What did you see instead?

   - go build downloads everything, but reports* unknown import path 
   "bitbucket.org/xxx/yyy/zzz": module source tree too big*
   - go mod tidy reports
* go build bitbucket.org/xxx/yyy/zzz: no Go files in *
   - go get reports the same as go mod tidy

If I setup my ~/.gitconfig with lfs.fetchexclude=* and clean out my 
modcache, I am able to build fine. This isn't ideal though as it will break 
other lfs setups for my team, and will cause some CI issues.

I've run go get -x and repeated the same git steps that the go command was 
using. It works fine through the fetch, but the problem seems to be with *git 
archive*. Here, the large files are downloaded and my .lfsconfig is 
ignored. When go performs this, it then hits me with the 500MB max size 
cap, which is a bit of a shame since git already downloaded everything, and 
the whole reason I set up lfs in the first place was to get around this 
cap. I'd expect go get to behave similarly to my git clone or fetch. Is 
there a reason we need this zip step just to unzip it anyway?

If I pass the --worktree-attributes flag to git archive, it honors my 
.lfsconfig and skips the downloads. The resulting zip is small.

So my question is, is there a way to pass the --worktree-attributes flag 
through the go mod commands or go get? I took a look at 
cmd/go/internal/modfetch/codehost/git.go, but it didn't seem like it.

Any help much appreciated.



-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to