So legen Sie die Umgebungsvariable GOPRIVATE fest

15

Ich habe angefangen, an einem GoProjekt zu arbeiten, und es verwendet einige private Module aus privaten Github-Repos und wann immer ich versuche, sie auszuführengo run main.go , wird folgende 410 GoneFehlermeldung angezeigt:

Überprüfen von github.com/repoURL/[email protected]+incompatible/go.mod: github.com/repoURL/[email protected]+incompatible/go.mod: Lesen von https: //sum.golang. org/lookup/github.com/!repoURL/[email protected]+inkompatibel : 410 Gone

Ich kann problemlos privates Repo vom Terminal klonen, was bedeutet, dass meine sshSchlüssel korrekt konfiguriert sind. Ich habe hier gelesen , dass ich GOPRIVATEUmgebungsvariablen festlegen muss , bin mir aber nicht sicher, wie ich das machen soll.

Kann jemand auf das entsprechende Tutorial antworten oder darauf verweisen?

Go: v1.13, OS: macOS Mojave

UsamaAmjad
quelle
man $(basename $SHELL)
Peter
1
Dafür gibt es eine Hilfe :go help module-private
Soroush

Antworten:

24

Kurze Antwort:

go env -w GOPRIVATE=github.com/repoURL/private-repo

ODER

Wenn Sie alle privaten Repos Ihrer Organisation zulassen möchten

go env -w GOPRIVATE=github.com/<OrgNameHere>/*

Lange Antwort:

Weitere Informationen finden Sie unter "Modulkonfiguration für nicht öffentliche Module" :

Die Umgebungsvariable GOPRIVATE steuert, welche Module der Befehl go als privat betrachtet (nicht öffentlich verfügbar) und sollte daher nicht die Proxy- oder Prüfsummen-Datenbank verwenden. Die Variable ist eine durch Kommas getrennte Liste von Glob-Mustern (in der Syntax von Go's path.Match) von Modulpfadpräfixen. Zum Beispiel,

 GOPRIVATE=*.corp.example.com,rsc.io/private

Der Befehl go behandelt jedes Modul mit einem Pfadpräfix, das mit einem der beiden Muster übereinstimmt, als privat, einschließlich git.corp.example.com/xyzzy, rsc.io/private und rsc.io/private/quux.

. .

Mit dem Befehl 'go env -w' (siehe 'go help env') können diese Variablen für zukünftige Aufrufe von go-Befehlen festgelegt werden.


Hinweis zur Verwendung von ssh:

Wenn Sie ssh verwenden, um auf git repo (lokal gehostet) zuzugreifen, möchten Sie möglicherweise Folgendes zu Ihrem hinzufügen ~/.gitconfig:

[url "ssh://[email protected]/"]
       insteadOf = https://git.local.intranet/

damit die goBefehle auf den Git-Server zugreifen können.

ifnotak
quelle
1
Vielen Dank! Der Trick bestand nun darin, eine Platzhalter-URL mit dem Namen der Organisation zu verwenden. go env -w GOPRIVATE=github.com/{OrgNameHere}/*
UsamaAmjad