【问题标题】:Structured releases (Git flow) for multiple projects in a single repository (monorepo)单个存储库 (monorepo) 中多个项目的结构化发布 (Git 流)
【发布时间】:2017-11-19 02:51:31
【问题描述】:

我成功地将Git Flow 用于多个项目,每个项目都有自己的存储库。

我希望将这些存储库合并到一个 monorepo 中。主要原因是跨多个项目共享依赖项目,这意味着我们需要跨多个存储库提交修复(请参阅:上面链接中的跨项目更改)。

Facebook 和 Google 似乎成功地使用了这个模型(参见:this fb talkthis 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,看看我们是否能得到比现在更好的东西;如果没有,我们将继续使用子模块。仍在寻找建议,谢谢大家!
  • 我同意它值得一试。

标签: git git-flow


【解决方案1】:

如何为每个项目使用一个分支,并将子分支用作具有适当命名空间的 git-flow 分支?例如;一个项目有一个名为project#1的分支,它类似于master,并且有一个名为project#1-developproject#1-hotfix#11等的子分支。您也可以拥有一个 master 分支,在发布时将项目分支合并到该分支中。

【讨论】:

  • 尽管根据其指南,这个问题可能不适合 SO,但我很想知道这是如何展开的。我们正朝着 monorepo 前进,关于如何使其与 git 和 gitflow 一起工作,我提出了同样的想法。目前我们有公关地狱,我们的团队很小。我害怕随着团队的发展会发生什么。
  • 我也有兴趣。当您在 gitflow 上创建发布时,您可以有效地阻止任何其他发布,直到您关闭它。在单个项目回购中这很好,但我看不出这如何在单声道上工作。除非您可以仅在一个应用程序/lib 而不是 entre repo 上创建功能?
猜你喜欢
  • 2012-07-16
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2015-08-26
  • 2013-05-08
相关资源
最近更新 更多