在GitHub上保存旧R包版本的好策略是什么?

时间:2016-06-30 14:22:15

标签: r github devtools

开发RStudio以及包devtoolsroxygen2使得R包的创建变得非常简单。我使用GitHub进行版本控制,devtools允许其他人直接从我的帐户安装。

随着我的软件包逐渐随着每个版本的变化而变化,我想知道是否应该维护过去稳定构建的.zip文件(或其他格式),以防任何人想要使用以前的版本。

直接从GitHub下载一个R包的.zip很容易,但是我想知道我是否应该将它添加到同一个GitHub目录(例如https://github.com/myaccount/mypackage/previous_versions/mypackage_0.1.zip)而不会通过{{1来删除某人的安装}}

所以,主要的Q是:

  1. 我应该保留一个旧包版本吗?
  2. 我应该将旧的软件包版本保存在GitHub R软件包目录的子文件夹中吗?
  3. 我应该将从GitHub下载的.zip文件保存为旧版本,还是在软件包构建过程中(即在RStudio中)生成源文件或二进制文件?
  4. 如果还不愿意发布到CRAN,这是多余的活动吗?!

2 个答案:

答案 0 :(得分:2)

当您认为您的包裹处于良好的固定位置时,您应该标记一个版本。这会在该时间点归档分支,并将zip文件与源代码和tar.gz文件一起存储。

每次我将CRAN软件包发布到CRAN(例如,请参阅https://github.com/nutterb/pixiedust/releases)以及我认为值得注意的某些中介标记时,我倾向于将其标记为发布。

管理标记版本之间更改的另一个好策略是在主分支下维护一个开发分支。这样,您的开发更改将不会污染或破坏从主分支中提取的任何内容。它让你可以自由地在dev分支中进行实验,同时总是有一个干净的工作副本来推送和恢复。

答案 1 :(得分:2)

<强> 1。我应该保留一个旧的包版本吗?

这是主观的,但我肯定会说&#34;是&#34;除非有空间限制,这可能不太可能。

这有两个目的。一个是为了您自己的方便,例如,如果您想确保始终有一个快速方法来测试旧版本与较新版本的结果。

另一个是人们经常需要旧版本的软件包,例如,如果有人想要使用您的软件包,但他们在服务器上使用较旧版本的R,而这些服务器上的策略会阻止更新到R。也许是较新版本的软件包包含一个新的依赖项,该依赖项仅适用于依赖于某个R或更高版本的软件包。

当然,可以在没有压缩文件或二进制文件的情况下安装软件包,但它非常方便。

<强> 2。我应该将旧包版本保存在我的GitHub R包目录的子文件夹中吗?

我会把它放在一个行李箱或特殊的子文件夹中,当有人试图install_github或克隆你的主分支时,它不会被自动下载。有一个单独的分支是个好主意。

第3。我应该将从GitHub下载的.zip文件保存为旧版本,还是在软件包构建过程中(即在RStudio中)生成源文件或二进制文件?

作为套餐作者,你能够知道这些是否有显着差异,哪一个更好,但默认情况下我推荐RStudio版本,因为我假设(如果你是这样的话)像我一样)你不太可能以这种方式包含不必要的文件。

<强> 4。如果一个人还不愿意发布到CRAN,这是多余的活动吗?

不,不一定。如果人们依赖你的包装,那么它是否真的无关紧要CRAN与否。事实上,不在CRAN上可能是一个更加积极主动的理由,以确保您的用户始终可以访问所需的软件包版本。