25

我一直在对自己进行有关 monorepos 的教育,因为我相信它对我的团队和我们项目的当前状态来说是一个很好的解决方案。我们有多个网络产品(客户端门户、内部门户、API、核心共享代码)。

我正在努力寻找我想要找到的答案的地方是版本控制。

当您的所有项目和产品都在一个单一存储库中时,版本控制策略是什么?

  • 1 版本适合所有人?
  • 具有独立版本控制的 Git 子模块(有点打破了拥有单一存储库的点)
  • 其他策略?

从 CI 的角度来看,当您在项目 A 中提交某些内容时,您是否应该在所有项目中启动整套测试以确保没有任何问题发生,即使没有必要对依赖/共享模块进行更改?

4

1 回答 1

6

当您的所有项目和产品都在一个单一存储库中时,版本控制策略是什么?

我建议一个版本适合所有人,原因如下:

  • 例如,在发布产品时,您可以标记整个分支release-x.x.x。如果出现错误,您无需检查“XXX 的哪个版本是 YYY 使用的”
  • 它还可以更轻松地强制 XXX 的 xxx 版本使用 YYY 的 xxx 版本。从本质上讲,使您的项目保持同步。当然,你如何处理这取决于你的项目是用什么技术编写的。

从 CI 的角度来看,当您在项目 A 中提交某些内容时,您是否应该在所有项目中启动整套测试以确保没有任何问题发生,即使没有必要对依赖/共享模块进行更改?

如果测试不需要特别长的时间来执行,那么这不会造成任何伤害。我肯定会推荐这个。您的测试运行得越频繁,您就能越早发现时间相关或环境相关的错误。

如果您出于某种原因不想一直运行测试,您可以查询您的 VCS 并编写一个脚本,该脚本根据已更改的内容有条件地触发测试。这在很大程度上依赖于 VCS 和 CI 服务器之间的集成。

于 2017-12-05T12:26:39.860 回答