如何使用Git(PHP,Python等)管理存储库和部署例程中生成的源代码文件?
例如,我有一个名为“interfaces”的存储库,其中包含Thrift定义.它们可以转换为Python,PHP,JS等骨架/存根.不同语言的其他项目(每个项目都在自己的存储库中)希望使用这些存根.如何将存根交付给项目?
我只看到两种方式:
>生成存根文件并将它们存储在“interfaces”存储库中,并且此存储库应附加到项目的存储库(作为只读子模块或任何其他方式).但是,由于过于复杂的“git子模块”概念,在检查接口和存根的更新时,这种方式引入了许多令人头疼的问题.
>将纯“接口”存储库附加到每个项目,并生成存根文件作为临时git-ignorable(!)文件(使用“make stubs”或类似文件).这样,每个项目都可以拥有自己的生成设置,并应用自己的补丁(如果需要的话).但是你需要在PHP / Python开发和生产环境中引入一些编译命令(而不仅仅是“git pull”).
这些方法的优点和缺点是什么?
解决方法:
通常最好支持“存储生成内容”路由上的“生成”路由,主要是因为您并不总是100%确定所述生成内容的当前状态:它是否与源同步?
在推送时,后接收挂钩可以小心生成相关内容.
见Git Hooks或Pro-Git hooks.
但是,在你自己的本地实例上(即在git pull上),别名可能同时结合拉动和生成所述内容.