【发布时间】:2017-11-19 02:51:31
【问题描述】:
我成功地将Git Flow 用于多个项目,每个项目都有自己的存储库。
我希望将这些存储库合并到一个 monorepo 中。主要原因是跨多个项目共享依赖项目,这意味着我们需要跨多个存储库提交修复(请参阅:上面链接中的跨项目更改)。
Facebook 和 Google 似乎成功地使用了这个模型(参见:this fb talk 和 this google talk)。
如何在将单个存储库用于多个项目的同时继续使用类似于 Git Flow 的东西?
虽然有用,但我链接到的讨论并未涉及分支和标记等细节,以及它们如何从单个主干/主干组织不同的项目版本。
我没有嫁给 Git Flow。我正在寻找如何在 monorepo 中构建发布。
【问题讨论】:
-
说真的,不要。如果您需要绑定特定版本,只需使用子模块即可。
-
如果你使用 Git,我真的不会使用 monorepo。谷歌和 Facebook 使用它的原因是“它总是这样做”(谷歌)、“我们有很多 Perforce 用户”(谷歌)和“迁移我们的 SVN 存储库更容易”(Facebook) .当然,以典型的谷歌/Facebook 方式,他们会冗长地谈论所谓的好处,以证明他们的决定是正确的。但老实说,monorepos 不适合与 Git 一起工作的 Git 模型和工具。
-
您的版本是否在所有项目中同步?这意味着它们是否具有相同的版本号并一起发布?如果不是,那么我想分支的数量可能会失控。
-
子模块是我们现在使用的,但它们并不能让跨项目的更改变得容易。 A 和 B 都依赖于 C,C 的更改需要提交到 C,然后是 A 和 B。@JoseMartinez 现在,A 和 B(在这个例子中)在不同的时间发布不同的版本;但它们都依赖于 C。你说得对,git-flow 分支将乘以子项目的数量,这变得笨拙。我仍然想尝试这个monorepo,看看我们是否能得到比现在更好的东西;如果没有,我们将继续使用子模块。仍在寻找建议,谢谢大家!
-
我同意它值得一试。