J'ai un bitbucket privé sur http://localhost:7990 ðŸ '‰ 🠻 lien de clonage http://localhost:7990/scm/gom/bar.git
go.mod ressemble à:
$GOPATH
âââ go
âââ pkg
âââ mod
âââ cache
âââ download
âââ mod.org
âââ bar.git
âââ @v
âââ v1.0.0.info
âââ v1.0.0.lock
âââ v1.0.0.zip.tmp882433775
Références disponibles dans un référentiel distant:
go get -v mod.org/bar.git go: finding lmod.org/bar.git v1.0.0 go: downloading lmod.org/bar.git v1.0.0 verifying lmod.org/bar.git@v1.0.0: lmod.org/bar.git@v1.0.0: reading https://sum.golang.org/lookup/lmod.org/bar.git@v1.0.0: 410 Gone
J'ai changé .gitconfig en
go get -v mod.org/bar go get lmod.org/bar: unrecognized import path "lmod.org/bar" (https fetch: Get https://lmod.org/bar?go-get=1: dial tcp: lookup lmod.org: no such host)
et essayé d'obtenir le module par name , n'obtenez no such host erreur d' no such host :
[url "http://localhost:7990/scm/gom"]
insteadOf = https://mod.org
Quand j'ajoute l'extension .git
git ls-remote http://localhost:7990/scm/gom/bar.git From http://localhost:7990/scm/gom/bar.git d456de4f12785b26ac27ba08cffb76687d1287c8 HEAD d456de4f12785b26ac27ba08cffb76687d1287c8 refs/heads/master f948bd47a22c5fb9abed5bff468a10fc24f67483 refs/tags/v1.0.0
go télécharger la version avec la balise v1.0.0 à GOPATH = /Users/user/go" :
module mod.org/bar go 1.13
, mais je ne peux toujours pas en utiliser une comme dépendance dans un autre projet go.
3 Réponses :
Le serveur pour https://mod.org/bar doit renvoyer go-import métadonnées go-import suivant le protocole décrit dans https://golang.org/cmd/go/#hdr-Remote_import_paths .
Plusieurs implémentations open source existent, telles que:
Vous pouvez stocker les informations d'identification (ou les jetons d'accès) pour le serveur HTTPS et le référentiel sous-jacent dans un fichier .netrc , et utiliser la variable d'environnement GOPRIVATE pour indiquer à la commande go ne pas rechercher votre dépôt privé dans le proxy public.
Étapes pour résoudre le problème:
1ï¸ âƒ £ a changé la déclaration du module dans go.mod en
go get -u mod.org/gom/bar.git go get mod.org/gom/bar.git@v1.0.0-beta.1
la même que la structure des référentiels bitbucket
références de repo au clonage:
module mod.org/gom/foo go 1.13 require ( mod.org/gom/bar v1.0.0-beta.1 ) replace ( mod.org/gom/bar => mod.org/gom/bar.git v1.0.0-beta.1 )
2 - changer .gitconfig : ajouter à la insteadOf ( ssh ou https )
go env -w GOPRIVATE="mod.org"
3ï¸ âƒ £ ajouter https://mod.org au référentiel privé
# [url "http://localhost:7990/scm"]
[url "ssh://git@mod.org"]
insteadOf = https://mod.org
â —Après toutes les préparations, le module sera accessible pour go mod download depuis un autre module par version tags
http://localhost:7990/scm/gom/bar.git
ssh://git@mod.org/gom/bar.git
ou manuellement
module mod.org/gom/bar
go 1.13
Vous ne pouvez pas utiliser le .git privé sans l'extension .git car les outils go ne connaissent pas le protocole de contrôle de version de votre dépôt privé, git ou svn ou tout autre.
Pour github.com ou golang.org ils sont codés en dur dans la source de go.
L'outil go effectuera une requête https pour le savoir avant de récupérer votre dépôt privé:
require private/user/repo v1.0.0 ... replace private/user/repo => private.server/user/repo.git v1.0.0
Si votre dépôt privé ne prend pas en charge https , veuillez utiliser la syntaxe de replace du module go pour indiquer directement les outils go:
https://private/user/repo?go-get=1
Pourquoi ne pas utiliser les directives de remplacement dans votre go.mod?
Pourquoi ne pas simplement mettre le code des dépendances dans $ GOPATH / src?
@Markus W Mahlberg - J'essaie d'utiliser le
bitbucketlocal debitbucketcomme détenteur de dépendances auto (privées). J'utilise également desgo modulespour automatiser le processus d'obtention et de gestion des versions des dépendances publiques / privées.@Volker - Je voudrais travailler avec le repo privé est public, mais
replacefait du bruit dans la configuration. Pour toutes mes dépendances privées, je dois écrirereplace lmod.org/xxx => lmod.org/xxx.git v1.0.0Votre bitbucket local a un nom d'hôte. Ainsi, votre chemin d'importation serait
your.host.name/owner/repo. Et vous pouvez utiliser le même chemin dans votre$GOPATH