我写了一个程序,想要封装一些逻辑。
所以我做了新的模块并把它拉进了我的git。git的链接看起来像gitlab.xxx.ru/group/subgroup/proj,但是当我尝试用go get获取它时,我得到了错误
fatal: «https://xxx.ru:@gitlab.xxx.ru/group/subgroup.git/» unreachable: URL using bad/illegal format or missing URL
Go试图加载子组而不是项目。
我在$GOPATH/src/中创建了文件夹gitlab.xxx.ru/group/subgroup/并克隆了我的项目。
现在它写道
could not import gitlab.xxx.ru/group/subgroup/proj (no required module provides package "gitlab.xxx.ru/group/subgroup/proj")
因此,如果我正确理解,在Golang 1.16中,我不能仅仅将我的项目放在正确的目录中,也不能使用本地包。
如何修复从我的GitLab加载并用ssh加载它?
谢谢。
UDP go.mod在我的程序中。
module gitlab.xxx.ru/group/subgroup/proj
go 1.16
require (
golang.org/x/sys v0.0.0-20210608053332-aa57babbf139
golang.org/x/text v0.3.6
)
发布于 2021-12-06 16:57:10
您可能会碰到Gitlab的预期行为,这将阻止在计算项目依赖项时获取子组列表。由于go get
请求未经身份验证,所以根组下的现有项目是不可见的,无法找到。
为了克服这个限制,Gitlab还没有提供解决方案,您可以使用以下两种方法之一:
possible)
如果Go知道版本控制限定符(.git),它就能够获取位于子组下的项目。要指出这一点,请确保使用以下格式gitlab.xxx.ru/group/subgroup/proj.git
导入项目
虽然这本身是可行的,但它将迫使您在导入中包含所有的.git
。为了克服这一问题,您还需要在您的replace
中使用go.mod
指令,以便您可以使用原始的导入路径。
最后,导入模块的项目应该具有如下所示的go.mod
:
require(
gitlab.xxx.ru/group/subgroup/proj v1.7.0
)
replace(
gitlab.xxx.ru/group/subgroup/proj => gitlab.xxx.ru/group/subgroup/proj.git v1.7.0
)
https://stackoverflow.com/questions/67924850
复制相似问题