gpt4 book ai didi

r - 具有多个包和开发人员的 Big R 项目 : Best setup for easy version controll based on packages

转载 作者:太空狗 更新时间:2023-10-29 14:22:10 25 4
gpt4 key购买 nike

我必须重组一个用 R 编写的大项目,该项目后来由多个包和开发人员组成。一切都在 git 服务器上设置。

问题是:我如何管理包内的频繁更改,而不必每次都构建它们并且开发人员在进行新的 pull 后更新它们?是否有任何最佳实践或自动化?我不希望 source() 带有未构建的包和 R.files,但希望尽可能坚持使用类似结构的包。我们将在 Windows 环境中工作。

谢谢。

最佳答案

所以我摆弄了一段时间,尝试了不同的设置并提出了适合我需要的安排。

它基本上由两个 git 存储库组成。其中第一个(让我们称之为 base-repo)包含大多数脚本,所有后来的包都基于这些脚本。第二个 repo 我们称之为“package-repo”。大多数开发工作应该在 base-repo 上完成。 base-repo 通过构建服务器和单元测试在 CI 控制下。

package-repo 包含我们要构建的每个包的文件夹和作为 git-submodule 的 base-repo。

现在可以通过非常简单的 bash/shell 脚本(“构建脚本”)构建每个包:

  • 检查稳定的子模块 base-repo 的提交/标签包构建应该基于
  • 将打包需要的文件复制到指定的打包文件夹
  • 检查并构建包
  • 脚本还可以创建包的历史文件
  • 脚本可以手动调用或由构建服务器调用

这种方法也可以与 packrat 结合使用。现在也可以将非常特定于包的附加代码添加到 package-repo 中,并在独立于 base-repo 的同时受到版本控制

该方法可以进一步扩展,以基于对基础仓库的推送来触发从 package-repo 构建软件包。带有指向 master 作为提交的构建脚本的包将始终是最新的,如果在构建服务器的控制下,它将确保对 base-repo 的更改不会破坏包。也可以创建多个包含来自 base-repo 的相同脚本的包。

另请参阅:git: symlink/reference to a file in an external repository

关于r - 具有多个包和开发人员的 Big R 项目 : Best setup for easy version controll based on packages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43523946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com