Hi!

We have recently turned one of our internal Go projects into a Go module.
The project was using vendoring and we intend to continue doing so - just
rather with the natural support from `go mod` instead of govendor as before.

An interesting issue came up when we've decided to try the recently added
ability of `go install` to grab a named module and build an executable from
it: we would expect that when we do

  $ go install an/module/import/path@latest

the command would grab the module's source code (it's hosted by a GitLab
instance, so we'd expect the source code to be `git clone`-d) and then behave
as if one would clone the module's repository by hand and then run
`go install` in the local clone's work tree - that is, we'd expect the command
to actually make use of the vendored packages and not attempt to download
anything except the source code of the specified module.

Instead, the command appears to read the module's go.mod file and then
download all the dependencies from the network - completely ignoring the
"vendor" directory of the module.

I have tried to locate a related issue in the bug tracker, but failed;
[1] is the closest I was able to come up with, but it appears to not touch the
very problem I have described.

The documentation also does not seem to specify the expected behaviour.

Hence my question is: is this a problem worth reporting/discussing or just an
undocumented behaviour which is "by design"?

My take on why this behaviour is confusing is that it makes `go install`
behave differently when it's apparently told to do the same thing to the same
module:

 - When I have the module's source code on my filesystem, and I run
   `go install` in that directory, the command uses the vendored dependencies,
   builds and installs the executable provided by the module.

 - When I run `go install import/path/of/that/module@revision`
   I expect the command to just add one extra step - fetch the module's
   source code and then run `go install` in the (temporary) directory
   with the fetched source code.

 1. https://github.com/golang/go/issues/44841

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/20210805193923.6vf7q4cssrdwaxre%40carbon.

Reply via email to