如何将 go get 或 go dep 与 GitLab 子组一起使用

sri*_*n91 1 go gitlab godeps

我有一个 Go 项目,需要来自私有 GitLab 存储库(例如git.mydomain.com/myteam/category/subcategory/project.git. 但我收到这个错误。

ensure Solve(): remote repository at https://git.mydomain.com/myteam/category.git does not exist or is inaccessible: : exit status 128
Run Code Online (Sandbox Code Playgroud)

Fli*_*mzy 7

这个问题在GitLab 支持跟踪器上进行了详细讨论。

TL;博士; 它(故意)被私人仓库破坏

[你的小组]是私人的吗?如果是这样,这是预期的行为,我建议阅读#1337(评论 36293613)开始的讨论。在这种情况下,我们决定以牺牲可用性为代价来最大限度地提高安全性/隐私性。建议的解决方法是专门将 .git 添加到您的 URL。

我发现的唯一解决方案是使用go get对 的支持.netrc,这既解决了 的问题dep,也解决了现代 Go 模块的问题。

  1. 在 GitLab 上创建具有api范围的个人访问令牌: 在此输入图像描述

  2. 创建一个~/.netrc文件:

     machine gitlab.com
         login <your gitlab username>
         password <the token created in step 1>
    
    Run Code Online (Sandbox Code Playgroud)
  3. .netrc稍微保护一下你的文件:

     chmod 600 ~/.netrc
    
    Run Code Online (Sandbox Code Playgroud)
  4. 利润

现在应该可以工作:

    dep ensure -add gitlab.com/<company>/<subgroup>/<project>
Run Code Online (Sandbox Code Playgroud)

或者

    go get gitlab.com/<company>/<subgroup>/<project>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是私有 GitLab 安装,我相信您可以gitlab.com在适用的情况下替换为适当的主机名。