在私有 github 文件夹中获取 R 文件
Sourcing R files in a private github folder
我希望在私人 github 文件夹中获取一些 R 脚本,并通过 R 在某些环境中使用它。
当使用 public github 文件夹时,这两个命令都可以完成工作:get_URL 和 source_url(来自 devtools)。
但是,当文件夹是私有的并且需要身份验证时,事情会变得复杂。
有没有一种方法可以完成此操作并将登录详细信息放入这些功能中,以便在需要进行某些 github 身份验证时自动传递用户名和密码?
提前致谢,
塔玛斯
TL;DR: 有可能,看下面的代码。
对于任何人的未来使用,这里有一个从私有 Github 存储库获取 R 脚本的方法,使用 httr
和可选的 devtools
.
我四处搜索以找到解决方案的各个部分,然后将它们拼接在一起。因此,归功于其他多个线程和网站。
见下面的代码:
library(httr)
# Source R script from Github
script <-
GET(
url = "https://api.github.com/repos/{user_name}/{repo_name}/contents/{script_name}.R",
authenticate({github_email}, {github_personal_access_token}), # Instead of PAT, could use password
accept("application/vnd.github.v3.raw")
) %>%
content(as = "text")
# Evaluate and parse to global environment
eval(parse(text = script))
这可能只适用于您拥有的私人仓库。我不确定它是否适用于与您共享的私人存储库。
See this link 创建一个 Github 个人访问令牌 (PAT)。如果需要,您还可以将其保存为 R 中的环境变量。 devtools::github_pat()
在这里很有用。
您的电子邮件和 PAT(或密码)都需要用引号引起来。
感谢 Ethan 和其他消息来源,我可以解决这个问题。
- 在 GitHub 上生成您的个人令牌
1.1 转到 GitHub
2.1 在右上角转到"Settings"
2.2 然后在左侧转到"Developer setting"
2.3 Select选项"Personal access tokens"
2.4 Select选项"Generate new token"
2.5 复制你的个人令牌
- 在您的主目录中 执行后续步骤
2.1 创建文件.Renviron
macbook@user:~$ touch .Reviron
在这个文件上写下你的个人令牌:
macbook@user:~$ nano .Reviron
GITHUB_PAT=YOUR PERSONAL TOKEN
- 现在在 R 上,您可以检查您的个人令牌是否已保存:
Sys.getenv("GITHUB_PAT")
你也可以用这个在 R 上编辑你的令牌:
usethis::edit_r_environ()
不要忘记重新启动 R 以保存您的更改。
3. 最后在 R 上,这些行代码将从私人存储库加载您的数据
library(httr)
req <- content(GET(
"https://api.github.com/repos/you_group/your_repository/contents/your_path_to your_doc/df_test.Rdata",
add_headers(Authorization = "token YOUR_TOKEN")
), as = "parsed")
tmp <- tempfile()
r1 <- GET(req$download_url, write_disk(tmp))
load(tmp)
我希望在私人 github 文件夹中获取一些 R 脚本,并通过 R 在某些环境中使用它。
当使用 public github 文件夹时,这两个命令都可以完成工作:get_URL 和 source_url(来自 devtools)。
但是,当文件夹是私有的并且需要身份验证时,事情会变得复杂。
有没有一种方法可以完成此操作并将登录详细信息放入这些功能中,以便在需要进行某些 github 身份验证时自动传递用户名和密码?
提前致谢,
塔玛斯
TL;DR: 有可能,看下面的代码。
对于任何人的未来使用,这里有一个从私有 Github 存储库获取 R 脚本的方法,使用 httr
和可选的 devtools
.
我四处搜索以找到解决方案的各个部分,然后将它们拼接在一起。因此,归功于其他多个线程和网站。
见下面的代码:
library(httr)
# Source R script from Github
script <-
GET(
url = "https://api.github.com/repos/{user_name}/{repo_name}/contents/{script_name}.R",
authenticate({github_email}, {github_personal_access_token}), # Instead of PAT, could use password
accept("application/vnd.github.v3.raw")
) %>%
content(as = "text")
# Evaluate and parse to global environment
eval(parse(text = script))
这可能只适用于您拥有的私人仓库。我不确定它是否适用于与您共享的私人存储库。
See this link 创建一个 Github 个人访问令牌 (PAT)。如果需要,您还可以将其保存为 R 中的环境变量。 devtools::github_pat()
在这里很有用。
您的电子邮件和 PAT(或密码)都需要用引号引起来。
感谢 Ethan 和其他消息来源,我可以解决这个问题。
- 在 GitHub 上生成您的个人令牌
1.1 转到 GitHub
2.1 在右上角转到"Settings"
2.2 然后在左侧转到"Developer setting"
2.3 Select选项"Personal access tokens"
2.4 Select选项"Generate new token"
2.5 复制你的个人令牌 - 在您的主目录中 执行后续步骤
2.1 创建文件.Renviron
macbook@user:~$ touch .Reviron
在这个文件上写下你的个人令牌:
macbook@user:~$ nano .Reviron
GITHUB_PAT=YOUR PERSONAL TOKEN
- 现在在 R 上,您可以检查您的个人令牌是否已保存:
Sys.getenv("GITHUB_PAT")
你也可以用这个在 R 上编辑你的令牌:
usethis::edit_r_environ()
不要忘记重新启动 R 以保存您的更改。
3. 最后在 R 上,这些行代码将从私人存储库加载您的数据
library(httr)
req <- content(GET(
"https://api.github.com/repos/you_group/your_repository/contents/your_path_to your_doc/df_test.Rdata",
add_headers(Authorization = "token YOUR_TOKEN")
), as = "parsed")
tmp <- tempfile()
r1 <- GET(req$download_url, write_disk(tmp))
load(tmp)