0

我试图更好地理解renvR 中的包是如何工作的,以及它是如何与 git 交互的。这是我的问题

  1. 假设我的 R 项目中有 master 和几个 git 分支,每个(master 和分支)我想使用不同的环境(不同的库或相同库的不同版本)。renv将能够处理它,即如果我从一个分支切换到另一个分支将需要调用renv::restore().

  2. 我有两个单独的项目,renv它们都在运行,分别称为项目 A 和项目 B。我想从项目 B 中获取环境并替换项目 A 中的环境。我该如何完成它?我只需要将renv文件夹从一个项目复制到另一个项目吗?

4

1 回答 1

2

假设我的 R 项目中有 master 和几个 git 分支,每个(master 和分支)我想使用不同的环境(不同的库或相同库的不同版本)。renv 是否能够处理它,即如果我从一个分支切换到另一个分支,则需要调用 renv::restore()。

renv从版本控制中排除项目库(以避免膨胀存储库大小),因此通常在切换分支时需要恢复库路径。

这有点费力,因此另一种解决方案是配置renv为您的存储库的每个分支使用不同的库路径git。您可以通过以下方式完成此操作(在您的项目中.Rprofile):

branch <- system("git rev-parse --abbrev-ref HEAD", intern = TRUE)
Sys.setenv(RENV_PATHS_LIBRARY = file.path("renv/library/branches", branch))

这样,renv将自动配置为为每个分支使用单独的库,这将在您切换分支时自动发生。

这似乎是一般有用的东西;如果是这样,您可以考虑在https://github.com/rstudio/renv/issues提交功能请求。

我有两个单独的项目,它们都运行 renv,分别称为项目 A 和项目 B。我想从项目 B 中获取环境并替换项目 A 中的环境。我该如何完成它?我只需要将 renv 文件夹从一个项目复制到另一个项目吗?

这应该就足够了,尽管这取决于您要复制多少环境。该renv文件夹包含一个settings.dcf定义项目设置的文件——您可能希望也可能不希望复制这些设置。(有关的项目特定设置?renv::settings的文档,请参阅。)renv

或者,您可以将项目从项目 B 复制renv.lock到项目 A,然后调用renv::restore(). 如果您将项目从一台机器复制到另一台机器,这可能更合适,特别是如果这些机器运行在不同的操作系统上。

于 2020-06-27T04:35:36.240 回答