Heim > Artikel > Backend-Entwicklung > git ls-remote ist erfolgreich, aber go get schlägt fehl
PHP-Editor Apple hat bei der Verwendung der Git- und Go-Sprache zum Entwickeln von Projekten ein Problem festgestellt: Der Befehl git ls-remote kann die Informationen des Remote-Warehouse erfolgreich abrufen, der Befehl go get kann jedoch die abhängigen Pakete nicht erfolgreich herunterladen. Dieses Problem beschäftigte den Editor schon lange. Nach ständigen Versuchen und Debuggen habe ich endlich eine Lösung gefunden. In diesem Artikel stellen wir die Ursache und Lösung dieses Problems im Detail vor und hoffen, Entwicklern, die auf das gleiche Problem stoßen, hilfreich zu sein.
Der Befehl git ls-remote ist für das Repository erfolgreich, wie unten gezeigt.
git ls-remote https://internal.net/dir1/dir2/dir3/repo warning: redirecting to https://internal.net/dir1/dir2/dir3/repo.git/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx head yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy refs/heads/master
Bei Verwendung von go get schlägt cmd jedoch fehl und das Repository kann nicht gefunden werden. Die Fehlerausgabe versucht, .git in einem Verzeichnis über der Repository-Struktur zu finden.
go get internal.net/dir1/dir2/dir3/repo@master go: internal.net/dir1/dir2/dir3/repo@master: invalid version: git ls-remote -q origin in /Users/{{UserId}}/go/pkg/mod/cache/vcs/xyz...: exit status 128: remote: The project you were looking for could not be found or you don't have permission to view it. fatal: repository 'https://internal.net/dir1/dir2.git/' not found
Meine Privatisierung ist
goprivate=internal.net
Was fehlt mir hier, damit Go erfolgreich sein kann?
Fügen Sie das VCS-Suffix im privaten Modulpfad hinzu, um das Repository-Stammpräfix zu markieren:
go get internal.net/dir1/dir2/dir3/repo.git@master
Siehe Direkter Zugriff auf private Module:
Möglicherweise ist weiterhin ein interner http-Server erforderlich, um Modulpfade in Repository-URLs aufzulösen. Wenn beispielsweise der Befehl „go“ das Modul corp.example.com/mod
时,它会向 https://corp.example.com/mod?go-get=1
发送 get 请求,并会查找存储库响应中的 url。为了避免此要求,请确保每个私有模块路径都有一个 vcs 后缀(如 .git
),标记存储库根前缀。例如,当 go 命令下载模块 corp.example.com/repo.git/mod
时,它将克隆位于 https://corp.example.com/repo.git
或 ssh://corp.example 的 git 存储库.com/repo.git
herunterlädt, müssen keine zusätzlichen Anforderungen gestellt werden.
Bitte beachten Sie, dass das Suffix vcs Teil des Modulpfads ist und daher überall dort enthalten sein sollte, wo der Modulpfad verwendet wird. Beinhaltet:
module
Befehl
module internal.net/dir1/dir2/dir3/repo.git
require
Befehl
require internal.net/dir1/dir2/dir3/repo.git v0.0.1
Einfuhrzollanmeldung
import "internal.net/dir1/dir2/dir3/repo.git/pkg/util"
Da ist noch mehr.
Das obige ist der detaillierte Inhalt vongit ls-remote ist erfolgreich, aber go get schlägt fehl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!