2014-12-05 4 views
15

Meine Institution hat kürzlich GitLab für uns installiert. Ich habe herausgefunden, wie man R-Pakete vom GitLab-Server mit devtools::install_git installiert und es funktioniert, solange das Projekt öffentlich ist.Installieren nicht öffentlicher Pakete von Gitlab mit devtools :: install_git

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

aber wenn ich ein Paket, das entweder als „Intern“ oder aufgeführt ist „Private“ Ich kann das Paket nicht ohne irgendeine Form der Authentifizierung installieren. Bis jetzt habe ich noch nicht herausgefunden, wie ich die Authentifizierung über die URL weitergeben kann. Hat jemand Erfahrung mit dem Herunterladen von Paketen von 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. 
+0

Haben Sie den Standard "https: // user @ password: domain.com/user/repo.git" ausprobiert? Natürlich extrem unsicher, aber das wird auch jedes Schema sein, bei dem Passwörter automatisch gespeichert/weitergegeben werden. –

+0

Ah, Sie könnten auch mit '.netrc': https://confluence.atlassian.com/display/STASH/Permanently+authenticating+mit+Git+repositories#PermanentlyentifyingwithGitrespositories-Usingthe.netrcfile –

+0

Genau diesen Vorschlag nicht funktionieren, aber 'https: // user: password @ domain.com/user/repo.git' macht es. Ich muss mich bereits im Netzwerk meiner Einrichtung authentifizieren, bevor ich zu GitLab komme, daher ist Sicherheit kein so kritisches Thema. Dies hilft jedoch. Ich kann damit zumindest eine Funktion zum Installieren von Paketen schreiben. – Benjamin

Antwort

5

Sie sollten eine Kombination der devtools und getPass Pakete versuchen.

https://github.com/wrathematics/getPass

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

Wo uname Name Ihre Gitlab Benutzer ist.

+1

Schicken Sie dann kein Passwort über die Leitung im Klartext? – Shape

+0

Dies ist eine gute Option, da getPass im Gegensatz zu Benjamins Antwort das Maskieren des Passworts auf dem Bildschirm maskiert. Ansonsten glaube ich, dass du Recht hast, dass es Klartext übertragen wird. Ich denke ssh ist der Weg zu gehen, wenn Sie darüber besorgt sind. – jsta

+2

mein goto für das maskieren des passworts oder das speichern von anmeldedaten ist eigentlich die verwendung von "getPass" zusammen mit dem 'openssl' paket, um gespeicherte anmeldedaten zu verschlüsseln, sodass ich sie während einer sitzung immer wieder verwenden kann, aber nur entschlüsselt wenn ich sie brauche. Aber zum Authentifizieren fühle ich mich sehr unsicher, wenn ich 'https' nicht benutze – Shape

3

Per Ciro Kommentar, Authentifizieren

https://user:[email protected]/user/repo.git 

mit dem Trick funktioniert. Der komplette Anruf wäre

Bitte beachten Sie, dass es Sicherheitsbedenken bei der Weitergabe des Benutzernamens und des Kennworts geben kann. Ich bin nicht vollständig über diese Bedenken informiert. Das funktioniert gut genug für meine Zwecke, weil ich im Netzwerk meines Unternehmens authentifiziert bin, um sogar den GitLab-Server zu sehen.

8

Ich würde sehr empfehlen, die SSH-Route zu gehen, und das unten funktioniert dafür. Ich fand den Sprung zu SSH einfach, besonders mit R und RStudio. Ich verwende Windows im folgenden Beispiel. Bearbeitungen von Code, den ich in der Praxis verwende, sind in Großbuchstaben geschrieben.

creds = git2r::cred_ssh_key("C:\\Users\\MYSELF\\.ssh\\id_rsa.pub", 
          "C:\\Users\\MYSELF\\.ssh\\id_rsa") 
devtools::install_git("[email protected]:GITLABGROUP/PACKAGE.git", 
         credentials = creds) 

Zwei schnelle zusätzliche Bemerkungen:

  • git2r mit devtools importiert wird, sollten Sie es nicht separat installiert werden müssen.
  • Auch ich denke nicht, dass dies erwähnen sollte, aber Passwörter im Klartext in Ihrem Skript ist eine sehr schlechte Idee.