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
bitbucket
local debitbucket
comme détenteur de dépendances auto (privées). J'utilise également desgo modules
pour 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
replace
fait du bruit dans la configuration. Pour toutes mes dépendances privées, je dois écrirereplace lmod.org/xxx => lmod.org/xxx.git v1.0.0
Votre 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