我正在开发一个R包,并在本地安装了一个开发版本.如果我正在对开发版本进行更新,有没有一种方法可以用不同的名称安装软件包,以便与当前的开发版本进行比较?我不想覆盖当前的dev版本,但我也希望避免将包重命名为dev2.

推荐答案

假设如果你的包名为pkg,并且你在包内的任何东西中没有引用pkg::(这将是奇怪的和不必要的,虽然我偶尔看到它),你可以使用git worktrees来做你想要的事情.1

一个工作树can位于同一个目录中(这是我的习惯,每个工作树目录名前加_),或者它可以完全分开.例如,在shell(bash或其他)中,如果你有分支main和某个devbranch,我将命名为fix/16-something,那么你可以

### assuming you're currently in the 'main' branch
$ git worktree add ../pkg_dev fix/16-something

您将有两个并排的目录,./pkg(原始目录,当前正在编辑main)和./pkg_dev(新目录,当前正在编辑fix/16-something).如果你在./pkg_dev/.git中查看,它通常是一个目录,但在工作树中,它是一个文件,指示真正的.git目录所在的位置../pkg_dev中的所有git个命令都按照预期工作.

现在,你可以临时编辑./pkg_dev/DESCRIPTION,使它变成Package: pkg_dev.现在你可以

### either one of these, for the unchanged prod version
library(pkg)
devtools::load_all("path/to/pkg")

### and this for the local dev version
devtools::load_all("path/to/pkg_dev") # package named `pkg_dev::`

当然,我讨论了让"main"作为原始目录,pkg作为原始包,你也可以切换:让你的原始包目录(真正的./.git/子目录)作为in—dev分支,然后git worktree add ../some_path main和临时重命名that包.

注:

  1. 实际上,即使包代码中有pkg::个引用,您仍然使用工作树来完成这一任务,但为了正确地执行,您可能需要在代码中将每个使用从pkg::个临时更改为pkg_dev::个.仍然是可能的,但有点麻烦.交给你了!

R相关问答推荐

如何使用shinyChatR包配置聊天机器人

在(g)子中使用asserable字符

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

如何修复R码的置换部分?

R Highcharts与两个位置关联的注释

在不安装软件包的情况下测试更新

根据选中三个复选框中的一个或两个来调整绘图

如何得到每四个元素向量R?

多个模拟序列间的一种预测回归关系

使用Facet_WRAP时更改框图中线的 colored颜色

在R中按行按列范围查找最大值的名称

按组计算列中1出现的间隔年数

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

如果COLSUM为>;0,则COLNAME为向量

使用gt_summary是否有一种方法来限制每个变量集进行配对比较?

Rmarkdown::Render vs Source()

如何修改GT表中组名行的 colored颜色 ?

如何在R中的两列以上使用联合(&U)?

具有由向量定义的可变步长的序列

如何在R曲线图弹出窗口中更改r和theta标签