猿问

Go get 拉错了仓库

我的模块是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/slogger

go 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 found

Scotts-Mac-mini:seeding syacko$ 

这gitlab.com/getsote/utilities.git是一个子目录而不是存储库。我不明白为什么go get要将实用程序作为存储库?


===========================


以前的更新

目录结构:


GOPATH/src/slogger

              |----go.mod

              |----slogger.go

              |----slogger_test.go


go.mod file

module slogger  or  gitlab.com/getsote/utilities/slogger -> still gets the error below


go 1.14


gitlab.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 above


gitblab.com/getsote/test-go-mod -> new repository with one less level


Scotts-Mac-mini:test-go-mod syacko$ go get gitlab.com/getsote/test-go-mod

go: 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 disabled

Scotts-Mac-mini:test-go-mod syacko$ 

对于缺少的版本,这仍然是 128 的状态错误。此外,它正在寻找代码的正确位置。如果这是真的,那么我只需要有关缺少版本的帮助。移动到缩短的目录结构是可行的。


莫回无
浏览 194回答 2
微课
2回答

杨魅力

原因是因为对于 git 存储库,它假定实用程序是存储库而不是实用程序/slogger有一种方法可以通过实现 go get API 来覆盖此行为。但是,由于安全问题,gitlab 尚未实现相同的功能。你可以在这里阅读更多。Gitlab 问题更新:添加对跟踪此问题的 gitlab 问题的引用。

catspeake

所以,这就是我如何使用 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/packagesgo 1.14编辑hello.go导入以匹配包。package mainimport (    "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$ helloHello, world.INFO:2020/04/10 21:11:33 Test messageScotts-Mac-mini:hello syacko$ 工作!感谢所有帮助过的人。如果没有您的帮助,这将无法解决。注意:这仅适用于公共存储库。
随时随地看视频慕课网APP

相关分类

Go
我要回答