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

Aar*_*ica 7 r github

我无法确定更新github上我的R软件包版本号的工作流程,以避免错误地命名为"中间"版本.这就是我现在所做的.

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

这个问题是,如果有人(比方说我)在我做了一些修复之后从github下载但是在我碰到版本之前,他们认为他们拥有的版本是1.0.0(因为这仍然是描述中的内容) )但它真的有1.0.0和1.0.1之间的东西.

这样的事情似乎在" 是否有可能使用git/github添加版本号 "的问题中进行讨论,其中R不是特定的,所以我不知道它是否在谈论同样的事情或者如何无论如何,这将为R实施.

还有一个问题是" 自动增加R软件包的版本 ",它有一个自动更新它的答案,虽然在评论中,我们看到Hadley"基本上不会出售自动增加版本的好处"(https:// github. com/hadley/devtools/issues/501).那里的代码也取决于Make所以不是跨平台的.

Hen*_*ikB 7

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

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

让我们master成为GitHub上的默认结帐分支.这样,当用户使用以下命令安装R软件包时,用户将始终获得最新版本:

install_github("owner/repos")
Run Code Online (Sandbox Code Playgroud)

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

install_github("owner/repos@develop")
Run Code Online (Sandbox Code Playgroud)

接下来,如果你的包也在CRAN上,那么要严格并且master反映出CRAN上究竟是什么.这样,无论用户是否使用,用户都会安装相同的相同包版本:

install.packages("repos")
Run Code Online (Sandbox Code Playgroud)

要么

install_github("owner/repos")
Run Code Online (Sandbox Code Playgroud)

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

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

git checkout master
git tag 1.2.3
git push --tags
Run Code Online (Sandbox Code Playgroud)

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

install_github("owner/repos@1.2.3")
Run Code Online (Sandbox Code Playgroud)

这个工具?所述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
Run Code Online (Sandbox Code Playgroud)

我已经每天使用上面的两年了 - 我无法想象不使用它.