Je cherche le moyen d’ go get
travail avec un repository privé, après beaucoup d’essais Google.
Le premier essai
$ go get -v gitlab.com/secmask/awserver-go Fetching https://gitlab.com/secmask/awserver-go?go-get=1 https fetch failed. Fetching http://gitlab.com/secmask/awserver-go?go-get=1 Parsing meta tags from http://gitlab.com/secmask/awserver-go?go-get=1 (status code 200) import "gitlab.com/secmask/awserver-go": parse http://gitlab.com/secmask/awserver-go?go-get=1: no go-import meta tags package gitlab.com/secmask/awserver-go: unrecognized import path "gitlab.com/secmask/awserver-go
oui, il n’a pas vu les balises meta parce que je ne pouvais pas savoir comment fournir des informations de connexion ???
Le deuxième essai Suivez https://gist.github.com/shurcooL/6927554 . Ajouter config à .gitconfig
[url "ssh://[email protected]/"] insteadOf = https://gitlab.com/ $ go get -v gitlab.com/secmask/awserver-go --> not work $ go get -v gitlab.com/secmask/awserver-go.git --> work but I got src/gitlab.com/secmask/awserer-go.git
Oui ça marche mais avec l’extension .git
avec le nom de mon projet, je peux le renommer en original mais est-ce qu’à chaque fois que ça go get
c’est pas si bon, y a-t-il une autre option?
La méthode appropriée consiste à placer manuellement le référentiel au bon endroit. Une fois que le référentiel est là, vous pouvez utiliser go get -u
pour mettre à jour le paquet et go install
pour l’installer. Un paquet nommé
github.com/secmask/awserver-go
va dans
$GOPATH/src/github.com/secmask/awserver-go
Les commandes que vous tapez sont les suivantes:
cd $GOPATH/src/github.com/secmask git clone [email protected]:secmask/awserver-go.git
Selon ce lien – https://gist.github.com/shurcooL/6927554 – vous avez deux choses à configurer. L’exemple est basé sur GitHub mais cela ne devrait pas changer le processus
$ git config --global [email protected]:.insteadOf https://github.com/ $ cat ~/.gitconfig [url "[email protected]:"] insteadOf = https://github.com/ $ go get github.com/private/repo
J’ai eu un problème avec go get
using repository privé sur gitlab de notre société. J’ai perdu quelques minutes à essayer de trouver une solution. Et j’ai trouvé celui-ci:
Vous devez obtenir un jeton privé à:
https://gitlab.mycompany.com/profile/account
Configurez git pour append un en-tête supplémentaire avec votre jeton privé:
$ git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN
Configurez votre git pour convertir les requêtes de ssh en http :
$ git config --global url."[email protected]:".insteadOf "https://gitlab.mycompany.com/"
Enfin, vous pouvez utiliser votre go get
normalement:
$ go get gitlab.com/company/private_repo
Cela ressemble au numéro 5769 de GitLab
Dans GitLab, puisque les référentiels se terminent toujours par
.git
, je dois spécifier.git
à la fin du nom du référentiel pour le faire fonctionner, par exemple:import "example.org/myuser/mygorepo.git"
Et:
go get example.org/myuser/mygorepo.git
On dirait que github résout ce problème en ajoutant ”
.git
”
Il est supposé être résolu dans « Ajout du support pour la récupération du référentiel de Go. # 5958 ”, à condition que les balises META appropriées soient en place .
Bien qu’il y ait toujours un problème pour Go lui-même: « cmd/go
: go get ne peut pas découvrir la balise META dans les documents HTML5 »
J’ai créé un fichier ssh-config spécifique à l’utilisateur, afin que mon utilisateur se connecte automatiquement avec les informations d’identification et la clé correctes.
Je devais d’abord générer une paire de clés
ssh-keygen -t rsa -b 4096 -C "[email protected]"
et sauvé par exemple ~/.ssh/id_my_domain
. Notez que c’est aussi la paire de clés (privée et publique) que j’ai connectée à mon compte Github, donc la mienne est stockée dans ~/.ssh/id_github_com
.
J’ai ensuite créé (ou modifié) un fichier appelé ~/.ssh/config
avec une entrée:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_github_com
Sur un autre serveur, le “ssh-url” est [email protected]:username/private-repo.git
et l’entrée pour ce serveur aurait été:
Host domain.com HostName domain.com User admin IdentityFile ~/.ssh/id_domain_com
Juste pour préciser que vous devez vous assurer que l’ User
, l’ Host
et le nom d’ HostName
sont définis correctement.
Maintenant, je peux simplement parcourir le chemin d’access puis go get
, par exemple go get main
où le fichier main/main.go
inclut le paquet (de l’exemple précédent) domain.com:username/private-repo.git
.
Générez un jeton github oauth ici et exportez votre jeton github en tant que variable d’environnement:
export GITHUB_TOKEN=123
Définissez git config pour utiliser l’URL d’authentification de base:
git config --global url."https://$GITHUB_TOKEN:[email protected]/".insteadOf "https://github.com/"
Maintenant, vous pouvez go get
votre repo privé.
Si vous avez déjà utilisé git SSH, cette réponse d’ Ammar Bandukwala est une solution simple:
go get
utilisations en interne. Les liners suivants vont faire git
et par conséquent go get
cloner votre paquet via SSH.
Github:
git config --global url."[email protected]:".insteadOf "https://github.com/"
BitBucket:
git config --global url."[email protected]:".insteadOf "https://bitbucket.org/"