Installation de paquets non publics à partir de Gitlab en utilisant devtools:: install git

Mon institution a récemment installé GitLab pour nous. J'ai compris comment installer les paquets R à partir du serveur GitLab en utilisant devtools::install_git et cela fonctionne tant que le projet est public.

#* When modeltable project has Public status
devtools::install_git('https://mini-me2.lerner.ccf.org/nutterb/modeltable.git')

Cependant, si j'ai un paquet répertorié comme "interne" ou "Privé", Je ne peux pas installer le paquet sans une certaine forme d'authentification. Pour l'instant, je n'ai pas compris comment passer l'authentification via L'URL. Quelqu'un a une expérience avec le téléchargement des paquets de GitLab?

#* After changing the 'modeltable' project to Private status
devtools::install_git('https://mini-me2.lerner.ccf.org/nutterb/modeltable.git')
Preparing installation of modeltable using the Git-URL: https://mini-me2.lerner.ccf.org/nutterb/modeltable.git
'/usr/bin/git'clone --depth 1 --no-hardlinks https://mini-me2.lerner.ccf.org/nutterb/modeltable.git /tmp/Rtmp5aj1cU/file24493dc03a32
Error: There seems to be a problem retrieving this Git-URL.
23
demandé sur Benjamin 2014-12-05 18:25:10

3 réponses

Vous pouvez essayer une combinaison de la devtools et getPass paquets.

Https://github.com/wrathematics/getPass

devtools::install_git(
  "https://gitlab.com/foo/bar.git", 
  credentials = git2r::cred_user_pass("uname", getPass::getPass())
)

uname est votre nom d'utilisateur Gitlab.

11
répondu jsta 2018-04-19 12:21:52

Je recommande fortement d'aller sur la route SSH, et ce qui suit fonctionne pour cela. J'ai trouvé que faire le saut vers SSH était facile, surtout avec R et RStudio. Je suis à l'aide de Windows dans l'exemple ci-dessous. Les modifications du code que j'utilise dans la pratique sont en majuscules.

creds = git2r::cred_ssh_key("C:\\Users\\MYSELF\\.ssh\\id_rsa.pub",
                            "C:\\Users\\MYSELF\\.ssh\\id_rsa")
devtools::install_git("git@gitlab.WORKDOMAIN.com:GITLABGROUP/PACKAGE.git",
                      credentials = creds)

Deux commentaires supplémentaires rapides:

  • git2r est importé avec devtools, vous ne devriez pas avoir besoin de l'installer séparément.
  • Aussi, je ne pense pas que cela devrait avoir besoin de mentionner, mais les mots de passe en clair dans votre script sont un très mauvaise idée.
15
répondu Rafael Zayas 2017-04-13 03:12:13

Commentaire de Ciro, authentifiant en utilisant

https://user:password@domain.com/user/repo.git

Fait l'affaire. Donc, l'appel complet serait

devtools::install_git('https://user:password@mini-me2.lerner.ccf.org/nutterb/modeltable.git')

Veuillez noter que le passage du nom d'utilisateur et du mot de passe peut poser des problèmes de sécurité. Je ne suis pas complètement éduqué sur ces préoccupations. Cela fonctionne assez bien pour mes besoins car je suis authentifié sur le réseau de mon entreprise pour voir même le serveur GitLab.

4
répondu Benjamin 2014-12-05 17:08:49