如何用主要版本替换 Go 模块到 fork @ master
How to replace a Go Module with a major version to a fork @ master
我无法通过具有 go.mod 的任何固定分支映射一个分支,该分支使用具有 /v2
/主要版本映射的项目。
我有以下 go.mod:
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
注意 module 需要 /v2
,否则它会得到 v2.17.0+incompatible
.
- 我在这里分叉了这个项目:https://github.com/marcottedan/saml2aws
- 我在这里创建了一个分支
add-aad-entropy-PhoneAppNotification
:https://github.com/marcottedan/saml2aws/tree/add-aad-entropy-PhoneAppNotification
- 我试图 mod 验证我的叉子中 go.mod 的第一行 mod 从
module github.com/versent/saml2aws/v2
到 module github.com/marcottedan/saml2aws/v2
我正在使用以下指令并且 none 正在工作:
即使我要求它获取 master
,这也会下载我的叉子的标签 2.35.0
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/v2@v2.35.0: parsing go.mod:
module declares its path as: github.com/versent/saml2aws/v2
but was required as: github.com/marcottedan/saml2aws/v2
我也试过mod验证我的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
如果我删除 /v2 并只使用@master,它并不关心并获取 v1 中的最新标签(在 saml2aws 迁移到 go 之前被命名为 2.17.0+incompatible mod)
dmarcotte@dmarcottes % go get -d github.com/marcottedan/saml2aws@master
go: github.com/marcottedan/saml2aws@master: github.com/marcottedan/saml2aws@v1.8.5-0.20220520001825-f05a14a2b3f2: invalid version: go.mod has post-v1 module path "github.com/marcottedan/saml2aws/v2" at revision f05a14a2b3f2
我在这里很迷路。
经过大量挖掘,以下是我发现似乎有效的步骤:
- 创建任何项目的分支
- 将
go.mod
第一行更改为您的新分支名称,提交并推送
- 在分支或 master 中提交并推送您需要的任何更改
- 在您的原始项目中,执行以下命令:
go get -d -u github.com/marcottedan/saml2aws/v2@master
其中@version 是您的分支名称。
- 在您的
go.mod
中,添加以下替换指令:replace github.com/versent/saml2aws/v2 v2.35.0 => github.com/marcottedan/saml2aws/v2 master
- 每次在你的分支中推送提交时,重复步骤 4。
最后你的 go.mod 应该是这样的:
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
请注意,如果您只是单人工作,则可以使用替换指令映射驱动器上的本地文件夹。但这往往不适用于队友,因为他们在提取代码时还必须检查完全相同的分叉路径。这是一个例子:
module <yourname>
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
replace github.com/versent/saml2aws/v2 => /Users/dmarcotte/git/saml2aws/
我无法通过具有 go.mod 的任何固定分支映射一个分支,该分支使用具有 /v2
/主要版本映射的项目。
我有以下 go.mod:
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
注意 module 需要 /v2
,否则它会得到 v2.17.0+incompatible
.
- 我在这里分叉了这个项目:https://github.com/marcottedan/saml2aws
- 我在这里创建了一个分支
add-aad-entropy-PhoneAppNotification
:https://github.com/marcottedan/saml2aws/tree/add-aad-entropy-PhoneAppNotification
- 我试图 mod 验证我的叉子中 go.mod 的第一行 mod 从
module github.com/versent/saml2aws/v2
到module github.com/marcottedan/saml2aws/v2
我正在使用以下指令并且 none 正在工作:
即使我要求它获取 master
2.35.0
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/v2@v2.35.0: parsing go.mod:
module declares its path as: github.com/versent/saml2aws/v2
but was required as: github.com/marcottedan/saml2aws/v2
我也试过mod验证我的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
如果我删除 /v2 并只使用@master,它并不关心并获取 v1 中的最新标签(在 saml2aws 迁移到 go 之前被命名为 2.17.0+incompatible mod)
dmarcotte@dmarcottes % go get -d github.com/marcottedan/saml2aws@master
go: github.com/marcottedan/saml2aws@master: github.com/marcottedan/saml2aws@v1.8.5-0.20220520001825-f05a14a2b3f2: invalid version: go.mod has post-v1 module path "github.com/marcottedan/saml2aws/v2" at revision f05a14a2b3f2
我在这里很迷路。
经过大量挖掘,以下是我发现似乎有效的步骤:
- 创建任何项目的分支
- 将
go.mod
第一行更改为您的新分支名称,提交并推送 - 在分支或 master 中提交并推送您需要的任何更改
- 在您的原始项目中,执行以下命令:
go get -d -u github.com/marcottedan/saml2aws/v2@master
其中@version 是您的分支名称。 - 在您的
go.mod
中,添加以下替换指令:replace github.com/versent/saml2aws/v2 v2.35.0 => github.com/marcottedan/saml2aws/v2 master
- 每次在你的分支中推送提交时,重复步骤 4。
最后你的 go.mod 应该是这样的:
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
请注意,如果您只是单人工作,则可以使用替换指令映射驱动器上的本地文件夹。但这往往不适用于队友,因为他们在提取代码时还必须检查完全相同的分叉路径。这是一个例子:
module <yourname>
go 1.18
require (
github.com/versent/saml2aws/v2 v2.35.0
)
replace github.com/versent/saml2aws/v2 => /Users/dmarcotte/git/saml2aws/