我们正在开发一个库(MyLib),其中包括两个模块,即 Module_1 和 Module_2。 文件夹结构如下。
MyLib
|
---------------
| |
Module_1 Module_2
有一名经理负责MyLib的发布和版本控制。两个独立团队正在开发这两个模块。 Module_1 依赖于 Module_2,反之亦然。
我们希望为 MyLib、Module_1 和 Module_2 维护独立的版本控制。 我们可以在MyLib上维护一个git repo,以便管理员可以对MyLib进行版本控制。我们能想到的理想配置如下。
MyLib
|
----------------------------
| | |
Module_1 Module_2 .git
| |
.git .git
现在,如何为Module_1和Module_2配置独立的git模块,以便每个团队都可以独立地返回到任何以前的版本? 例如,开发 Module_1 的团队将使用 Module_2 的特定版本,他们应该能够在未来的任何日期从其 git 存储库返回到 Module_1 和 Module_2 的该特定版本。
我发现在 git 存储库之外包含一个文件夹并不简单。 对我来说,我们的情况是任何具有由独立团队开发的多个模块并且相互依赖的库的常见场景。 有人可以阐明如何处理这种情况吗?
我检查了 git 子模块。但我认为这对于我们的用例来说不是正确的选择。
解决方案可能是采用此文件夹结构
MyLib
\Module_1
\Module_2
\setup
您将有一个用于 MyLib 的 git 存储库,另一个用于 Module_1 的 git 存储库,另一个用于 Module_2 的 git 存储库。
setup
将包含模块和提交哈希之间的映射,因此它将包含如下文件:
cd Module_1
git checkout <some commit hash>
cd ../Module_2
git checkout <some other commit hash>
因此,如果不同团队的不同模块有单独的所需配置,请对它们进行适当的设置并将其作为 bash 脚本运行,以便团队成员能够在同一页面上。