假设我的 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()
. 如果您将项目从一台机器复制到另一台机器,这可能更合适,特别是如果这些机器运行在不同的操作系统上。