首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从gitlab子群加载模块?

如何从gitlab子群加载模块?
EN

Stack Overflow用户
提问于 2021-06-10 16:09:18
回答 1查看 2.2K关注 0票数 3

我写了一个程序,想要封装一些逻辑。

所以我做了新的模块并把它拉进了我的git。git的链接看起来像gitlab.xxx.ru/group/subgroup/proj,但是当我尝试用go get获取它时,我得到了错误

代码语言:javascript
运行
复制
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/并克隆了我的项目。

现在它写道

代码语言:javascript
运行
复制
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在我的程序中。

代码语言:javascript
运行
复制
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
)
EN

回答 1

Stack Overflow用户

发布于 2021-12-06 16:57:10

您可能会碰到Gitlab的预期行为,这将阻止在计算项目依赖项时获取子组列表。由于go get请求未经身份验证,所以根组下的现有项目是不可见的,无法找到。

为了克服这个限制,Gitlab还没有提供解决方案,您可以使用以下两种方法之一:

possible)

  • Leverage

  • 将项目定位在根中,而不是位于子组中(不总是扩展,以及导入模块(参见下面的)的项目中的替换指令)。

如果Go知道版本控制限定符(.git),它就能够获取位于子组下的项目。要指出这一点,请确保使用以下格式gitlab.xxx.ru/group/subgroup/proj.git导入项目

虽然这本身是可行的,但它将迫使您在导入中包含所有的.git。为了克服这一问题,您还需要在您的replace中使用go.mod指令,以便您可以使用原始的导入路径。

最后,导入模块的项目应该具有如下所示的go.mod

代码语言:javascript
运行
复制
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
)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67924850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档