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/go-proto@v2.86.0+incompatible/go.mod: github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod: Lesen von https: //sum.golang. org/lookup/github.com/!repoURL/go-proto@v2.86.0+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


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://git@git.local.intranet/"]
       insteadOf = https://git.local.intranet/

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.