Quelle est la bonne façon de «récupérer» un référentiel privé?

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:

  1. Vous devez obtenir un jeton privé à:
    https://gitlab.mycompany.com/profile/account

  2. Configurez git pour append un en-tête supplémentaire avec votre jeton privé:

     $ git config --global http.extraheader "PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN 
  3. Configurez votre git pour convertir les requêtes de ssh en http :

     $ git config --global url."[email protected]:".insteadOf "https://gitlab.mycompany.com/" 
  4. 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/"