Git 子模块令人兴奋
Git 子模块令人兴奋
这是一个系列中的第一个博客,我在其中讨论了我学到或经历的一件新事物。
上周,一位团队成员在 斯帕克 我说的是完全重构我们的 SAAS 的通知服务,称为 飞能 .在这次谈话中,我们意识到在开发这项服务时,我们的管理员和公共 API 之间可能存在大量冗余,并希望创建一个单独的通知 API(供内部使用)来解决这个问题。
问题是,在这些服务(管理、公共和通知)中,它们需要所有相同的数据库配置、模型、迁移等。这意味着每当我们添加或修改模型时,我们都需要更新所有项目.但后来我们发现了 Git 子模块,哇。现在,我们将所有数据库代码都维护在一个存储库中,并作为子模块添加到需要与数据库交互的每个服务中。
什么是子模块?
子模块允许您将一个或多个存储库作为子文件夹包含或嵌入到另一个存储库中。就是这么简单。在我们的案例中,我们能够通过利用子模块来减少多个服务之间的冗余。
添加子模块
假设您正在从事像我们这样的项目。你有一个存储库 服务
和一个存储库 数据库模块
包含您所有的数据库配置代码。
你可以加 数据库模块
作为一个子模块 服务
通过在 服务
存储库。
git 子模块添加 https://github.com/<org_or_username> /database-module.git 数据库
就这么简单,现在数据库文件夹将在您的内部可用 服务
您将能够从 CLI 或编辑器管理两个存储库的源代码控制。
注意:使用旧版本的 Git,您需要运行
git子模块更新--初始化--递归
为了将子模块的内容下载到您的本地代码库中
此时,您可以提交您的更改 服务
一切都会好起来的。您甚至可以从 Github 和 Bitbucket 的代码选项卡中查看子模块。
路障
在我们的服务中实现子模块时,我们遇到的最大障碍是更新我们的自动部署管道以处理新的子模块。
我们的团队主要使用 Google Cloud Run 来提供这些服务,所以如果您也使用 Cloud Run 并且在部署管道方面需要一些帮助,请告诉我!
结论
子模块并不总是解决此类问题的最佳解决方案,但是,在我们的案例中,它可以完美运行。试一试,将此工具添加到您的开发运维工具带中。如果您有任何问题,请随时联系!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明