Используйте go get, чтобы требовать зависимости от частного репозитория github на WSL 2 - PullRequest
1 голос
/ 05 мая 2020

Я пробую WSL 2 на windows 10, и пока все идет хорошо, но я 2 недели боролся, чтобы сделать эту работу, потому что по какой-то причине go get не использует или не использует возможность заставить Git Диспетчер учетных данных запрашивать мои учетные данные.

Я подписался на этот блог, чтобы настроить WSL2 с помощью GCM https://www.edwardthomson.com/blog/git_credential_manager_with_windows_subsystem_for_linux.html

И он очень хорошо работает для большинства повседневных задач, таких как клонирование, чтение и запись. Но при использовании go get я получаю эту ошибку.

go get <remote github repo>@<latest commit id>
go: <remote github repo> 681dceefc81203e094872401c184d038090d6049 => v0.0.17-0.20200501212733-681dceefc812
go get: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: verifying module: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: reading https://sum.golang.org/lookup/<remote github repo>@v0.0.17-0.20200501212733-681dceefc812: 410 Gone
        server response:
        not found: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /tmp/gopath/pkg/mod/cache/vcs/232ff028cb2fdebd254e30bfc612843483f0fe3fbeb18d5fc8fb4b20f21c9021: exit status 128:
                fatal: could not read Username for 'https://github.com': terminal prompts disabled

Уже пробовали s sh -keys и предлагаемые здесь решения go получаем результаты в ошибке «подсказки терминала отключены» для github частное репо

Но ошибка остается той же, при включении env GIT_TERMINAL_PROMPT=1 ничего не происходит, я думаю, это потому, что WSL 2 не имеет разрешений на это. В любом случае я также попробовал этот инструмент https://github.com/microsoft/Git-Credential-Manager-for-Mac-and-Linux и, установив переменную для простого хранилища учетных данных, он запрашивает учетные данные в терминале. Но я использую двухфакторную аутентификацию, потому что это требует организация, и в приглашении запрашивается только имя пользователя и пароль, поэтому аутентификация не выполняется.

Поэтому мне нужно связаться с товарищем, который использует Ma c. Он может go get зависимости воздействовать на go.mod, сделать фиксацию и сделать sh изменение, чтобы я мог вытащить его и продолжить оттуда. Но, конечно, это не идеально, и у него нет никаких проблем, он использует osxkeychain для управления своими git учетными данными.

Кто-нибудь сталкивался с этой проблемой? или знаете как это решить? Заранее большое спасибо.

1 Ответ

2 голосов
/ 06 мая 2020

Go не может понять, что определенные модули являются частными и их контрольная сумма не должна проверяться по библиотеке контрольных сумм go. Следующая ошибка возникает из-за того, что

verifying module: <remote github repo>@v0.0.17-0.20200501212733-681dceefc812/go.mod: reading https://sum.golang.org/lookup/<remote github repo>@v0.0.17-0.20200501212733-681dceefc812: 410 Gone

Если возможно, используйте как минимум go 1.13 или выше. Go представил переменные env с именами GOPRIVATE, GONOPROXY и GONOSUMDB для лучшего управления частными модулями. Самый простой способ сообщить Go, что вы импортируете частное репо, - использовать GOPRIVATE. Задайте для шаблона частных репозиториев переменную GOPRIVATE env, чтобы подавить проверку контрольной суммы и использование GOPROXY. Пример ниже позволяет избежать контрольной суммы для всех репозиториев в этой иерархии:

GOPRIVATE=github.com/<your org>/*

Проверить ответы здесь и здесь . Вы также можете набрать go help module-private для получения помощи.

...