I have trouble mapping a fork through any pinned branch with go.mod that use a project with the /v2
/ major version mapping.
I have the following go.mod:
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
Notice the module requires the /v2
, otherwise it would get v2.17.0+incompatible
.
add-aad-entropy-PhoneAppNotification
here: https://github.com/marcottedan/saml2aws/tree/add-aad-entropy-PhoneAppNotification
module github.com/versent/saml2aws/v2
to module github.com/marcottedan/saml2aws/v2
I'm using the following directives and none are working:
This downloads the tag 2.35.0
of my fork even though I ask it to get master
dmarcotte@dmarcottes% go get -d github.com/marcottedan/saml2aws/v2@master
go: downloading github.com/marcottedan/saml2aws/v2 v2.35.0
go: github.com/marcottedan/saml2aws/[email protected]: parsing go.mod:
module declares its path as: github.com/versent/saml2aws/v2
but was required as: github.com/marcottedan/saml2aws/v2
I also tried modifying my go.mod
:
replace github.com/versent/saml2aws/v2 => github.com/marcottedan/saml2aws/v2 v2.35.0
-> Can't find a way to target master with the /v2 pattern
If I drop the /v2 and just go with @master, it doesn't care and get the latest tag in v1 (which was named 2.17.0+incompatible before saml2aws migrated to go mod)
dmarcotte@dmarcottes % go get -d github.com/marcottedan/saml2aws@master
go: github.com/marcottedan/saml2aws@master: github.com/marcottedan/[email protected]: invalid version: go.mod has post-v1 module path "github.com/marcottedan/saml2aws/v2" at revision f05a14a2b3f2
I'm quite lost here.
After a lot of digging, here are the steps I found that seem to be working:
go.mod
first line to your new fork name, commit & pushgo get -d -u github.com/marcottedan/saml2aws/v2@master
where the @version is your branch name.go.mod
, add the following replace directive: replace github.com/versent/saml2aws/v2 v2.35.0 => github.com/marcottedan/saml2aws/v2 master
At the end your go.mod should look like this:
module <yourname>
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
replace github.com/versent/saml2aws/v2 v2.35.0 => github.com/marcottedan/saml2aws/v2 master
Note that if you're only working in solo, you can use the replace directive to map a local folder on your drive. But this tend to not work well with teammates since they must also have the same exact fork path checked out while pulling the code. Here's an example:
module <yourname>
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
replace github.com/versent/saml2aws/v2 => /Users/dmarcotte/git/saml2aws/