Heim  >  Artikel  >  Backend-Entwicklung  >  git ls-remote ist erfolgreich, aber go get schlägt fehl

git ls-remote ist erfolgreich, aber go get schlägt fehl

WBOY
WBOYnach vorne
2024-02-14 13:54:08372Durchsuche

git ls-remote 成功而 go get 失败

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.

Frageninhalt

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?

Problemumgehung

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.gitssh://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:

  1. module Befehl

    module internal.net/dir1/dir2/dir3/repo.git
  2. require Befehl

    require internal.net/dir1/dir2/dir3/repo.git v0.0.1
  3. Einfuhrzollanmeldung

    import "internal.net/dir1/dir2/dir3/repo.git/pkg/util"
  4. 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen