使用 git/github 对 R 包进行版本控制?



我在确定在 github 上更新 R 包版本号的工作流程以避免错误命名"中间"版本时遇到问题。这就是我现在所做的。

  • 提交并推送版本1.0.0,并将版本设置为1.0.0
  • 提交并推送一些错误修复等,而无需更改 DESCRIPTION 文件
  • 最终决定我应该将版本提高到 1.0.1,因此提交并推送更新的 DESCRIPTION,然后设置新版本。

这样做的问题是,如果有人(比如说,我(在我进行一些修复后但在我提升版本之前从 github 下载,他们认为他们拥有的版本是 1.0.0(因为这是仍在描述中的内容(,但它确实在 1.0.0 和 1.0.1 之间。

在问题中似乎讨论了这样的事情 "是否可以使用 git/github 添加版本号",其中但不特定于 R,所以我无法判断它是否在谈论同一件事,或者无论如何如何为 R 实现。

还有一个问题"R包的自动版本增加",它有一个自动更新它的答案,尽管在评论中,我们看到Hadley"基本上没有自动增加版本的好处"(https://github.com/hadley/devtools/issues/501(。那里的代码也依赖于 Make,所以不是跨平台的。

我强烈建议遵循 Git Flow 分支模型,其中:

  • master分支包含最新稳定版本的代码。使用版本格式x.y.z
  • develop分支包含正在开发的代码。使用版本格式x.y.z-9000

master成为 GitHub 上的默认结帐分支。 这样,当用户使用以下方法安装 R 包时,将始终获得最新版本:

install_github("owner/repos")

希望安装开发人员版本的用户可以使用:

install_github("owner/repos@develop")

接下来,如果您的包裹也在 CRAN 上,请严格master并准确反映 CRAN 上的内容。 这样,无论用户是否使用以下命令,用户都会安装相同的软件包版本:

install.packages("repos")

install_github("owner/repos")

这样,无论人们访问您的CRAN页面还是您的GitHub页面,他们都会看到相同的信息。 此外,您可以放心,即使您标记更新develop,所有用户也将看到相同的稳定信息/版本(只有精明的用户才会知道此分支(。

接下来,当您发布新版本时,您可以使用其版本号git tag它们,例如

git checkout master
git tag 1.2.3
git push --tags

这样,用户可以安装他们想要的任何版本,例如

install_github("owner/repos@1.2.3")

这个工具?git flow扩展是编排上述内容的出色工具,例如

git checkout develop
git flow release start 1.2.4
emacs DESCRIPTION ## Update version x.y.z-9000 -> x.y.z+1
R CMD build ...
R CMD check ...
git flow release finish 1.2.4
git checkout master
git push
git push --tags
git checkout develop
emacs DESCRIPTION ## Bump version to x.y.(z+1)-9000
git commit -am "Bump develop version [ci skip]"
git push

我已经每天使用上述内容两年了 - 我无法想象不使用它。

最新更新