我必须重新构建一个用R编写的大项目,该项目后来包含几个软件包以及开发人员。一切都在git服务器上设置。
问题是:如何管理包内的频繁更改,而不必每次都构建它们,开发人员在重新启动后更新它们?有没有最佳实践或自动化?我不希望source()使用未构建的软件包和R.files,但是我希望尽可能地坚持使用类似结构的软件包。我们将在Windows环境中工作。
感谢。
答案 0 :(得分:0)
所以我摆弄了一会儿,尝试了不同的设置,并想出了一个符合我需求的安排。
它基本上包含两个git存储库。它们的第一个(让它们称之为base-repo)包含所有后来的软件包所基于的大多数脚本。第二个回购我们称之为" package-repo"。 大多数开发工作应该在base-repo上完成。 base-repo通过构建服务器和单元测试进行CI控制。
package-repo包含我们要构建的每个包的文件夹和base-repo作为git-submodule。
现在可以通过一个非常简单的bash / shell脚本(“构建脚本”)构建每个包:
这种方法也可以与packrat结合使用。特定于程序包的附加代码现在也可以添加到package-repo中,并且受版本控制,同时不受base-repo的支持
可以进一步扩展该方法,以基于推送到base-repo来触发package-repo中的包的构建。具有指向master作为提交的构建脚本的包将始终是最新的,并且如果在构建服务器的控制下,它将确保对base-repo的更改不会破坏包。此外,还可以从base-repo创建包含相同脚本的多个包。
另请参阅:git: symlink/reference to a file in an external repository