为了账号安全,请及时绑定邮箱和手机立即绑定

Go get 拉错了仓库

Go get 拉错了仓库

Go
莫回无 2022-05-23 17:55:15
我的模块是gitlab.com/getsote/utilities/slogger 我的存储库是gitlab.com/getsote/utilities/slogger.git 当我运行时go get gitlab.com/getsote/utilities/slogger,我收到以下消息。Scotts-Mac-mini:seeding syacko$ go get gitlab.com/getsote/utilities/sloggergo get gitlab.com/getsote/utilities/slogger: module gitlab.com/getsote/utilities/slogger: git ls-remote -q origin in /Users/syacko/workspace/sotesoft/golang/pkg/mod/cache/vcs/80b3644beae1b986f1c659355360479e2463820660aa328d2edb1e571aba259b: exit status 128:    remote: The project you were looking for could not be found.    fatal: repository 'https://gitlab.com/getsote/utilities.git/' not foundScotts-Mac-mini:seeding syacko$ 这gitlab.com/getsote/utilities.git是一个子目录而不是存储库。我不明白为什么go get要将实用程序作为存储库?===========================以前的更新目录结构:GOPATH/src/slogger              |----go.mod              |----slogger.go              |----slogger_test.gogo.mod filemodule slogger  or  gitlab.com/getsote/utilities/slogger -> still gets the error belowgo 1.14gitlab.com/getsote/utilities contains repository slogger.git我已经进行了测试,看看问题是否出在路径中的节点数上。因此,我创建了一个没有子目录的新存储库并推送了 slogger 代码。然后运行go get gitlab.com/getsote/slogger生成不同的错误消息。GOPATH/gitlab.com/getsote/test-go-mod -> create new directory and added slogger files listed abovegitblab.com/getsote/test-go-mod -> new repository with one less levelScotts-Mac-mini:test-go-mod syacko$ go get gitlab.com/getsote/test-go-modgo: downloading gitlab.com/getsote/test-go-mod v0.0.0-20200409023538-794310bf7cf9    server response:    not found: gitlab.com/getsote/test-go-mod@v0.0.0-20200409023538-794310bf7cf9: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/7753c92c9bd1419156d8120684b7f3707fd207e01a2947ba89e2acfd2ecfb4d0: exit status 128:        fatal: could not read Username for 'https://gitlab.com': terminal prompts disabledScotts-Mac-mini:test-go-mod syacko$ 对于缺少的版本,这仍然是 128 的状态错误。此外,它正在寻找代码的正确位置。如果这是真的,那么我只需要有关缺少版本的帮助。移动到缩短的目录结构是可行的。
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

原因是因为对于 git 存储库,它假定实用程序是存储库而不是实用程序/slogger

有一种方法可以通过实现 go get API 来覆盖此行为。但是,由于安全问题,gitlab 尚未实现相同的功能。你可以在这里阅读更多。Gitlab 问题

更新:添加对跟踪此问题的 gitlab 问题的引用。


查看完整回答
反对 回复 2022-05-23
?
catspeake

TA贡献1111条经验 获得超0个赞

所以,这就是我如何使用 gitlab.com 让它工作的方法。我并不是说其他方式不起作用,它们只是不适合我和我的设置。首先,因为我不在乎代码是否对公众可用,所以我在 gitlab.com 上创建了一个新组。这个新组从一开始就是公开的,所以不需要调整权限。然后我创建了一个名为packages的存储库,并将该存储库克隆到我的本地计算机,其目录结构与 gitlab.com 中的目录结构相同,gitlab.com/soteapps/packages在~/workspace/soteapps/packages我的计算机上。这两个都在 GOPATH 之外。我不确定这是否重要,但它是这样工作的,所以我把它放在这里。


在包下,我复制了 slogger 目录和代码。


cp -R slogger ~/workspace/soteapps/packages/.

编辑go.mod文件以匹配packages目录中的存储库结构。slogger 目录下没有 go.mod 文件。


module gitlab.com/soteapps/packages


go 1.14

编辑hello.go导入以匹配包。


package main


import (

    "fmt"

    "rsc.io/quote"

    "gitlab.com/soteapps/packages/slogger"

)


func main() {

    fmt.Println(quote.Hello())

    slogger.Info("Test message")

}

使用构建程序go build -o hello,然后运行它hello,结果如下:


Scotts-Mac-mini:hello syacko$ hello

Hello, world.

INFO:2020/04/10 21:11:33 Test message

Scotts-Mac-mini:hello syacko$ 

工作!感谢所有帮助过的人。如果没有您的帮助,这将无法解决。


注意:这仅适用于公共存储库。


查看完整回答
反对 回复 2022-05-23
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信