2 回答
TA贡献2065条经验 获得超13个赞
这是您正在寻找的修复程序,我测试了以下文件,它可以正常工作,go.mod
module test
go 1.14
replace periph.io/x/devices/v3 => github.com/lutzky/devices/v3 v3.6.9-newfeature
require (
periph.io/x/devices/v3 v3.6.9 // indirect
)
我首先安装,periph.io/x/devices/v3
go get periph.io/x/devices/v3
然后我在 ,
格式中插入了替换:go.modreplace periph.io/x/devices/v3 => github.com/lutzky/devices/v3 mainreplace <original_module> => <forked_repo> <branch>
然后我就跑了。之后,替换指令中的替换指令被交换,这是分叉存储库分支上的最新标记,从而为您提供了上面看到的内容。go getmainv3.6.9-newfeaturemain
TA贡献1803条经验 获得超3个赞
多亏了 ramaraja-ramanujan@ 的回答和更多的调试,我找到了答案。
TL;DR - 正确答案是:
replace periph.io/x/devices/v3 v3.6.9 => github.com/lutzky/devices/v3 main
// this part was missing ^^^
这将在构建时立即起作用,并且(或)将更改为特定标记。有几个有趣的旁注:go mod tidygo getmain
Go 代理
标签是我自己的;我创建它是为了让它工作。我已经删除了它,但不断替换为 - 无论我清除了多少缓存!运行它原来是在联系 http://proxy.golang.org。为了禁用此功能,我运行了.这用伪版本替换了该行。请注意,这与我的分叉中的当前提交相匹配,而我的分叉和原始存储库都没有 - 它似乎是从现有提交开始并递增的。v3.6.9-newfeaturego mod tidymainv3.6.9-newfeaturestracegoGOPROXY=direct go getv3.6.10-0.20210508194004-cae0146d8900mainv3.6.10v3.6.9
不是子目录/v3
实际上,源存储库(https://github.com/periph/devices)没有子目录。我认为正在发生的事情是该域正在做一些诡计 - 确实要使用浏览器 http://periph.io/x/devices/v3 确实有效。但是,Go 的分辨率似乎在模块路径中采用 final,在这种情况下,不指示子目录(但实际上是对标记名称的限制)。这显然是允许的,并且在 https://golang.org/ref/mod 中进行了讨论,但它并不完全简单。v3periph.io/v3
- 2 回答
- 0 关注
- 70 浏览
添加回答
举报