即使在使用git时,它目前承认按项目使用1个回购(并且大部分答案或建议都会告诉你这样做),但它们确实是将所有内容放入同一个存储库的解决方案,称为'monorepo'战略。 (谷歌,Facebook和微软)正在(几乎)走向它......所以你可以很容易找到一些关于正反两面的文档。
例:https://github.com/babel/babel/blob/4c371132ae7321f6d08567eab54a59049e07f246/doc/design/monorepo.md
一旦你了解的主要问题之一是版本控制工具的性能(但混帐肯定可以支持5开发团队),它更像是一个项目的感觉......因为它似乎你似乎已经看到了一些优势,我强烈建议你测试它!
此外,如果您不满意,则用于拆分存储库(保留历史记录)的git命令比合并存储库容易得多,因此似乎首先尝试。
在我的团队中,我们越来越趋向monorepo。
我的5个开发团队维护一个由6个解决方案(又名部分)组成的中型应用程序。
如果这是一个应用程序,monorepo确实可能是最好的解决方案。
但是,如果您在使用nuget管理的解决方案之间存在依赖关系,则必须解决该问题。
要么你删除的NuGet使用,并且使用二进制依赖(没有办理入住手续的他们!),所以你必须建立所有(但如果你想用树枝将是困难的)。
要么你接受,使2个提交做一个更新(如你有多个Git仓库做)。可以手动完成或通过构建自动完成。
PS:git的子模块是困难的,不是很劝了git的用户第一次......所以基于这样一个解决方案将是:-(
疼痛。另一方面,一个单一的Git回购意味着更改任何方案导致一个新的完整的重建我们的TeamCity CI服务器上的所有解决方案。
不一定,你可以做出不同的构建为每个解决方案,并设置每个TeamCity的触发仅在自己的解决方案文件夹。
Ps2:我做了一个更长的回答,期待;-)我希望这会有所帮助...
如果你的团队没有很多的经验与子模块,然后我会建议对这一做法。子模块在纸上很酷,但实际上它们确实会造成混乱。 – zypherman
“如果你没有经验与他们,不要获得与他们的经验”?如果你对他们有一个具体的问题,我会很有兴趣知道这件事,但是这听起来像是一种FUD的人,如果他们没有 - 也不想 - 学习如何正确使用一个功能。 –