Go get вытягивает неправильный репозиторий - PullRequest
1 голос
/ 08 апреля 2020

Мой модуль 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

Я запустил тест, чтобы определить, является ли проблема числом узлов в пути. Итак, я создаю новый репозиторий без подкаталога и вставил код лозунга. Затем запустил 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 не сработало для меня. Поэтому я начал с нуля, чтобы посмотреть, как решить проблему.

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Причина в том, что для репозитория git предполагается, что утилиты - это репозиторий, а не утилиты / слогер

Существует способ переопределить это поведение путем реализации go get API. Но gitlab еще не внедрил то же самое из-за проблем безопасности. Вы можете прочитать больше здесь. Проблема Gitlab

Обновление: добавьте ссылку на проблему Gitlab, отслеживающую эту проблему.

0 голосов
/ 11 апреля 2020

Итак, вот как я заставил это работать, используя gitlab.com. Я не говорю, что другие способы не будут работать, они просто не для меня и моей установки. Во-первых, так как мне все равно, доступен ли код для публикации c, я создал новую группу на gitlab.com. Эта новая группа опубликована c с самого начала, поэтому нет необходимости настраивать разрешения. Затем я создаю репозиторий с именем packages и клонирую репозиторий на свой локальный компьютер с той же структурой каталогов, что и на gitlab.com, gitlab.com/soteapps/packages с ~/workspace/soteapps/packages на моем компьютере. Оба из вне GOPATH. Я не уверен, что это имеет значение, но это работает таким образом, поэтому я помещаю это здесь.

Под пакетами я скопировал каталог и код слоггера.

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$ 

Сработало! Спасибо всем, что помогло. Это не было бы решено без вашей помощи.

Примечание: это работает только для publi c репозиториев.

...