来自私有gitlab的源R文件与基本身份验证

时间:2017-03-12 13:00:14

标签: r gitlab

我想从私人gitlab服务器中获取.R文件。我需要使用用户/密码的基本身份验证

我尝试了这种没有成功的指令

httr::GET("http://vpsxxxx.ovh.net/root/project/raw/9f8a404b5b33c216d366d80b7d48e34577598069/R/script.R", 
authenticate("user", "password",type="basic"))

任何想法?

此致

编辑:我发现了这种方式......但我需要下载所有项目...

bundle <- tempfile()
git2r::clone("http://vpsxxx.ovh.net/root/projet.git",
             bundle, credentials=git2r::cred_user_pass("user", "password"))
source(file.path(bundle,"R","script.R"))

1 个答案:

答案 0 :(得分:0)

您可以使用gitlab API从存储库中获取文件。 HashMap可以帮助您做到这一点。当前版本0.9与apiV3和V4兼容。

这应该有用(它可以在私人gitlab上用apiv3工作)

gitlabr

这将为您提供文件的角色版本。你也可以用另一种方式取回原始版本来处理它。

library(gitlabr)
my_gitlab <- gl_connection("https://private-gitlab.com",
                       login = "username",
                       password = "password",
                       api_version = "v4") # by default. put v3 here if needed
my_file <- my_gitlab(gl_get_file, project = "project_name", file_path = "path/to/file")

您现在可以获取代码

raw <- gl_get_file(project = "project_name",
                   file_path = "file/to/path",
                   gitlab_con = my_gitlab,
                   to_char = F)
temp_file <- tempfile()
writeBin(raw, temp_file)

这是一个解决方案。我没有设法在不使用API​​的情况下获取文件。

知道: *您可以使用访问令牌而不是用户名和密码 *您可以使用source(temp_file) 几种方式。它在小插图中记录。我在这里使用了两种不同的方法。 *版本1.0与v3 api不兼容。但我认为你使用v4。

如果需要更清楚的答案,请随时回复我,以便我更新此帖。