在 GitHub 上保存旧 R 包版本的好策略是什么?
What's a good strategy for saving old R package versions on GitHub?
RStudio 和包 devtools
和 roxygen2
的开发使得 R 包的创建变得非常容易。我使用 GitHub 进行版本控制,devtools
允许其他人直接从我的帐户轻松安装。
随着我的包随着每个版本的变化而逐渐变化,我想知道我是否应该保留我过去稳定构建的 .zip 文件(或其他格式),以防有人想使用以前的版本。
直接从 GitHub 下载 R 包的 .zip 很容易,但我想知道是否应该将它添加到相同的 GitHub 目录(例如 https://github.com/myaccount/mypackage/previous_versions/mypackage_0.1.zip ) 而不会通过 install_github("myaccount/mypackage")
.
搞乱别人的安装
所以,主要问题是:
- 我应该保留旧的软件包版本吗?
- 我应该将旧包版本保存在 GitHub R 包目录的子文件夹中吗?
- 我应该将从 GitHub 下载的 .zip 文件保存为我的旧版本,还是在包构建过程中生成源文件或二进制文件(即在 RStudio 中)?
- 如果还不愿意发布到 CRAN,这是多余的 activity 吗?!
当你认为你的包在一个很好的地方时,你应该标记一个版本。这将在那个时间点存档分支并存储带有源代码的 zip 文件和 tar.gz 文件。
我倾向于将我的 CRAN 包标记为一个版本,每次我将它发布到 CRAN(例如,参见 https://github.com/nutterb/pixiedust/releases)并带有一些我认为值得注意的中间标签。
管理标记版本之间更改的另一个好策略是在主分支下维护一个开发分支。这样你的开发变化就不会污染或破坏那些从你的主分支中拉出来的人正在使用的任何东西。它使您可以自由地在开发分支中进行实验,同时始终拥有一个干净的工作副本来推送和恢复。
1.我应该保留旧的软件包版本吗?
这是主观的,但我肯定会说 "yes" 除非有 space 限制,这可能不太可能。
这有两个目的。一个是为了您自己的方便,例如,如果您想确保始终有一种快速的方法来测试旧版本与新版本的结果。
另一个是人们通常需要旧版本的包,例如,如果有人想使用您的包,但他们在服务器上使用旧版本的 R,而服务器上的政策阻止对 R 的更新。也许是较新版本的包包含一个新的依赖项,它只适用于依赖于特定 R 或更高版本的包。
当然,没有压缩文件或二进制文件也可以安装软件包,但这样非常方便。
2。我应该将旧包版本保存在 GitHub R 包目录的子文件夹中吗?
我会把它放在主干或特殊子文件夹中,当有人试图 install_github
或克隆您的主分支时不会自动下载。有一个单独的分支是个好主意。
3。我应该将从 GitHub 下载的 .zip 文件保存为我的旧版本,还是在包构建过程中生成源文件或二进制文件(即在 RStudio 中)?
作为软件包的作者,您可以知道这些是否存在显着差异以及哪个更好,但默认情况下我会推荐 RStudio 构建,因为我假设(如果您像我一样)您不太可能以这种方式包含不必要的文件。
4.如果还不愿意发布到 CRAN,这是多余的 activity 吗?!
不,不一定。如果人们依赖你的包裹,那么它是否在 CRAN 上真的无关紧要。事实上,不在 CRAN 上可能是一个更主动的原因,以确保您的用户始终可以访问所需版本的包。
RStudio 和包 devtools
和 roxygen2
的开发使得 R 包的创建变得非常容易。我使用 GitHub 进行版本控制,devtools
允许其他人直接从我的帐户轻松安装。
随着我的包随着每个版本的变化而逐渐变化,我想知道我是否应该保留我过去稳定构建的 .zip 文件(或其他格式),以防有人想使用以前的版本。
直接从 GitHub 下载 R 包的 .zip 很容易,但我想知道是否应该将它添加到相同的 GitHub 目录(例如 https://github.com/myaccount/mypackage/previous_versions/mypackage_0.1.zip ) 而不会通过 install_github("myaccount/mypackage")
.
所以,主要问题是:
- 我应该保留旧的软件包版本吗?
- 我应该将旧包版本保存在 GitHub R 包目录的子文件夹中吗?
- 我应该将从 GitHub 下载的 .zip 文件保存为我的旧版本,还是在包构建过程中生成源文件或二进制文件(即在 RStudio 中)?
- 如果还不愿意发布到 CRAN,这是多余的 activity 吗?!
当你认为你的包在一个很好的地方时,你应该标记一个版本。这将在那个时间点存档分支并存储带有源代码的 zip 文件和 tar.gz 文件。
我倾向于将我的 CRAN 包标记为一个版本,每次我将它发布到 CRAN(例如,参见 https://github.com/nutterb/pixiedust/releases)并带有一些我认为值得注意的中间标签。
管理标记版本之间更改的另一个好策略是在主分支下维护一个开发分支。这样你的开发变化就不会污染或破坏那些从你的主分支中拉出来的人正在使用的任何东西。它使您可以自由地在开发分支中进行实验,同时始终拥有一个干净的工作副本来推送和恢复。
1.我应该保留旧的软件包版本吗?
这是主观的,但我肯定会说 "yes" 除非有 space 限制,这可能不太可能。
这有两个目的。一个是为了您自己的方便,例如,如果您想确保始终有一种快速的方法来测试旧版本与新版本的结果。
另一个是人们通常需要旧版本的包,例如,如果有人想使用您的包,但他们在服务器上使用旧版本的 R,而服务器上的政策阻止对 R 的更新。也许是较新版本的包包含一个新的依赖项,它只适用于依赖于特定 R 或更高版本的包。
当然,没有压缩文件或二进制文件也可以安装软件包,但这样非常方便。
2。我应该将旧包版本保存在 GitHub R 包目录的子文件夹中吗?
我会把它放在主干或特殊子文件夹中,当有人试图 install_github
或克隆您的主分支时不会自动下载。有一个单独的分支是个好主意。
3。我应该将从 GitHub 下载的 .zip 文件保存为我的旧版本,还是在包构建过程中生成源文件或二进制文件(即在 RStudio 中)?
作为软件包的作者,您可以知道这些是否存在显着差异以及哪个更好,但默认情况下我会推荐 RStudio 构建,因为我假设(如果您像我一样)您不太可能以这种方式包含不必要的文件。
4.如果还不愿意发布到 CRAN,这是多余的 activity 吗?!
不,不一定。如果人们依赖你的包裹,那么它是否在 CRAN 上真的无关紧要。事实上,不在 CRAN 上可能是一个更主动的原因,以确保您的用户始终可以访问所需版本的包。