2

我的模块是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
go get gitlab.com/getsote/test-go-mod: gitlab.com/getsote/test-go-mod@v0.0.0-20200409023538-794310bf7cf9: verifying module: gitlab.com/getsote/test-go-mod@v0.0.0-20200409023538-794310bf7cf9: reading https://sum.golang.org/lookup/gitlab.com/getsote/test-go-mod@v0.0.0-20200409023538-794310bf7cf9: 410 Gone
    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 的状态错误。此外,它正在寻找代码的正确位置。如果这是真的,那么我只需要有关缺少版本的帮助。移动到缩短的目录结构是可行的。

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

最新更新

@praveent > https://medium.com/cloud-native-the-gathering/go-modules-with-private-git-repositories-dfe795068db4的解决方案对我不起作用。所以我从头开始看看如何解决这个问题。

4

2 回答 2

1

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

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

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

于 2020-04-08T06:17:10.120 回答
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$ 

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

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

于 2020-04-10T21:12:33.927 回答