The module path needs to be part of a valid URL, but it doesn't have to be the same as the repository URL. That's what my golang.org/x/mod example was meant to demonstrate. The repository is hosted on a different domain.
On Tue, Sep 7, 2021 at 1:05 PM Dean Schulze <dean.w.schu...@gmail.com> wrote: > Your first paragraph seems to say "no" to my question. But then this > seems to say "yes" to my question > > "In short, the go command needs to be able to form a valid URL from the > module path," > > In my experience it is a definite yes. > > On Tuesday, September 7, 2021 at 1:51:16 PM UTC-6 jayc...@google.com > wrote: > >> The module path doesn't need to match the repo URL, but if other modules >> depend on your module, then the go command needs to be able to find your >> repository given your module path. >> >> The lexical constraints for module paths are documented at >> https://golang.org/ref/mod#go-mod-file-ident. In short, the go command >> needs to be able to form a valid URL from the module path, so only certain >> characters may be used, there must be a dot in the first path element and >> so on. >> >> The go command looks up the repository location by sending a GET request >> to https://<module-path>?go-get=1. It looks for an HTML response with a >> meta tag that says where the module is located. For example, for the module >> golang.org/x/mod, the go command will request >> https://golang.org/x/mod?go-get=1 and will get a response with: >> >> <meta name="go-import" content="golang.org/x/mod git >> https://go.googlesource.com/mod"> >> >> >> That says the module is in a Git repository at >> https://go.googlesource.com/mod. >> >> That process is explained at https://golang.org/ref/mod#vcs-find. >> There's a special case for GitHub module paths, so if your module is hosted >> there, you don't need to stand up a server for that URL. Also, if a path >> component ends with ".git", ".hg", etc, the go command will use everything >> up to there as the repository URL without performing the lookup. >> >> >> On Tue, Sep 7, 2021 at 12:34 PM Dean Schulze <dean.w....@gmail.com> >> wrote: >> >>> If you are going to publish a Go module does the module name have to >>> include the repo name? I couldn't find this documented anywhere but >>> through trial and error I've discovered that it is required. >>> >>> I named my module like this and published it to github: >>> >>> *module key-value-mod* >>> >>> In another module I declared it to be a dependency >>> >>> *require github.com/dwschulze/key-value-mod >>> <http://github.com/dwschulze/key-value-mod> v0.1.0* >>> >>> When I ran *go get* I got this error: >>> >>> *$ go get github.com/dwschulze/key-va...@v0.1.0 >>> <http://github.com/dwschulze/key-value-mod@v0.1.0>* >>> *go: github.com/dwschulze/key-va...@v0.1.0 >>> <http://github.com/dwschulze/key-value-mod@v0.1.0>: parsing go.mod:* >>> * module declares its path as: key-value-mod* >>> * but was required as: github.com/dwschulze/key-value-mod >>> <http://github.com/dwschulze/key-value-mod>* >>> >>> I changed the module's name to include the repo (and retagged that >>> commit and pushed both) >>> >>> *module github.com/dwschulze/key-value-mod >>> <http://github.com/dwschulze/key-value-mod>* >>> >>> and then it worked. >>> >>> This is a private repo if that makes any difference. >>> >>> I also discovered that when you have module problems like this you have >>> to clear the mod cache or you end up getting the same error over and over >>> again. >>> >>> >>> -- >>> 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...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/d7c5cc18-6c54-4379-92fe-f313a2c5bc01n%40googlegroups.com >>> <https://groups.google.com/d/msgid/golang-nuts/d7c5cc18-6c54-4379-92fe-f313a2c5bc01n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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/64f091c8-21be-4106-b7c7-07a0a55b01fan%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/64f091c8-21be-4106-b7c7-07a0a55b01fan%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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/CAGCADbb3MB4bq9ON9jXb1_MWvEFj2eaZPTUMSv24v_RMmOVWhA%40mail.gmail.com.