Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R包开发中使用git?_Git_R_Cran - Fatal编程技术网

如何在R包开发中使用git?

如何在R包开发中使用git?,git,r,cran,Git,R,Cran,我是R的新手,已经开始写一个中等规模的项目。即使它将作为应用程序的一部分分发,我还是决定用它制作一个包,使组织更加整洁 当我使用版本控制时,如何处理描述文件需要版本和日期字段这一事实?我不想在每次git提交时都更改该文件 有没有一个标准的Makefile 此外,我还不完全清楚如何做到这一点,并且仍然能够在开发时使用该软件包。如果您是R新手,我建议您使用我认为最先进的R-IDE。它提供了两个方面:以及 我不想在每次git提交时都更改该文件。 ... 此外,我还不完全清楚如何做到这一点,并且仍然能够

我是R的新手,已经开始写一个中等规模的项目。即使它将作为应用程序的一部分分发,我还是决定用它制作一个包,使组织更加整洁

当我使用版本控制时,如何处理描述文件需要版本和日期字段这一事实?我不想在每次git提交时都更改该文件

有没有一个标准的Makefile


此外,我还不完全清楚如何做到这一点,并且仍然能够在开发时使用该软件包。

如果您是R新手,我建议您使用我认为最先进的R-IDE。它提供了两个方面:以及

我不想在每次git提交时都更改该文件。 ... 此外,我还不完全清楚如何做到这一点,并且仍然能够在开发过程中使用该软件包


通常,您会安装一个用于使用的包,以及用于开发的本地Git存储库。当开发达到下一个软件包版本的状态时,您将在
说明
文件中更改日期和版本。在两个版本之间,您可以创建任意多个阶段、提交并推送到GIT。

如果您使用
devtools
软件包,您不必在每次编辑后构建和安装软件包,只需使用
load_all()
即可,并且工作在您的工作会话中完成,因此您可以测试更改(最好使用
testthat
包)

我写了一篇关于它的RPub:

您仍然可以选择构建用于分发的包源tarball

请注意,git并没有推广一种每次提交时自动更新文件位的机制,就像SVN中的$id$一样。Linus自己说这是“愚蠢的”和“愚蠢的”:


我不会每次提交都更改
说明,但我会更新日期,并在每次实际构建包时将当前的
YYYYMMDD
日期放在破折号后的版本中。这是一种夜间构建,跟踪它是在哪天晚上


目前,我有一个软件包处于一个相当活跃的开发阶段,由几个不同同事的需求驱动。次要版本中的日期很方便,因为我可以很容易地问同事“您使用的版本是什么日期?
sessionInfo()
显示了它。”

克隆repo的其他人呢?他们会有一个无效的包,因为描述与实际内容不符:描述中的版本不是代码的版本。也许我在寻找某种提交钩子,用git版本更新版本number@Andreas要么我很困惑,或者你很困惑,因为你对描述文件中版本的担心对我来说毫无意义。@Andreas你真的想为每个Git提交构建一个新的包吗?就我个人而言,我通常会执行几个提交,直到包达到我想要发布的状态。你可能不想增加包的数量repo中每一次更改的数量-目前没有好的工具来做这件事,它也没有什么优势。@hadley:没有,但是为了支持目的,能够找到用户正在使用的版本会很好,我们还有一个用例,涉及到将包版本作为元数据存储在数据清理/处理套件中(为了科学再现性)。可能是某种可以更新描述的编译前/编译后钩子,以及一个解析git修订版的小函数。在中提到了编译后钩子,但我在其他地方找不到任何细节。