使用devtools :: install_git从Gitlab安装非公共包

时间:2014-12-05 15:25:11

标签: r gitlab devtools

我的机构最近为我们安装了GitLab。我已经弄清楚如何使用devtools::install_git从GitLab服务器安装R软件包,只要项目是公开的,它就可以正常工作。

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

但是,如果我有一个列为"内部"或者"私人,"我无法在没有某种形式的身份验证的情况下安装该软件包。到目前为止,我还没有想出如何通过URL传递身份验证。有没有人有从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.

3 个答案:

答案 0 :(得分:18)

您可以尝试devtoolsgetPass个软件包的组合。

https://github.com/wrathematics/getPass

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

unameGitlab用户名。

答案 1 :(得分:17)

我强烈建议您使用SSH路由,以下内容适用于此。我发现实现SSH的飞跃很容易,尤其是R和RStudio。我在下面的示例中使用了Windows。我在实践中使用的代码编辑全部大写。

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)

另外两条评论:

  • git2r是使用devtools导入的,您不需要单独安装。
  • 此外,我不认为这应该提及,但是脚本中的明文密码是个坏主意。

答案 2 :(得分:7)

Per Ciro的评论,使用

进行身份验证
https://user:password@domain.com/user/repo.git

诀窍。所以完整的电话会是

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

请注意,以这种方式传递用户名和密码可能存在安全问题。我没有完全了解这些担忧。这对我的目的来说效果很好,因为我在我公司的网络上进行了身份验证,甚至可以看到GitLab服务器。