我正在开发一个R包,并在本地安装了一个开发版本.如果我正在对开发版本进行更新,有没有一种方法可以用不同的名称安装软件包,以便与当前的开发版本进行比较?我不想覆盖当前的dev版本,但我也希望避免将包重命名为dev2.
我正在开发一个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包.
注:
pkg::
个引用,您仍然使用工作树来完成这一任务,但为了正确地执行,您可能需要在代码中将每个使用从pkg::
个临时更改为pkg_dev::
个.仍然是可能的,但有点麻烦.交给你了!