即使在使用git时,普遍认为我们应该按项目使用1个仓库(大多数答案或建议都会告诉你这样做),但确实有将所有内容放在同一个仓库中的解决方案,这被称为“单一仓库”策略。
像谷歌、Facebook和微软这样的大型互联网公司正在使用它(不仅仅是git),而微软也正在朝着这个方向发展...所以你可以很容易地找到一些关于优缺点的文档。
例如:
https://github.com/babel/babel/blob/4c371132ae7321f6d08567eab54a59049e07f246/doc/design/monorepo.md
一旦你明白其中一个主要问题是版本控制工具的性能(但git肯定可以支持一个5人开发团队),这更多是一个项目的感觉...因为看起来,你已经有了一些优势的想法,我强烈建议你去尝试一下!
此外,如果您对仓库的合并不满意,使用git命令拆分仓库(保留历史记录)要比合并仓库的命令简单得多,所以这似乎是首先尝试的方法。
在我的团队中,我们越来越倾向于使用单一仓库。
引用:
我的团队由5名开发人员组成,负责维护一个中等规模的应用程序,包含6个解决方案(也称为部分)。
如果这是一个应用程序,单一仓库确实可能是一个好的解决方案。
但是,您将需要解决的一个问题是,如果您的解决方案之间存在使用nuget管理的依赖关系。
要么您移除nuget的使用,使用二进制依赖(不要将其提交!),这样您就必须构建它们所有(但如果您想使用分支,这将很困难)。
要么您接受进行两次提交来进行更新(就像您在多个git仓库中所做的那样)。可以手动完成,也可以使用构建自动化。
附注:git子模块对于初次使用git的用户来说很困难,也不是很推荐的解决方案...所以基于此的解决方案可能会很痛苦 :-(
引用:
另一方面,一个单一的Git仓库意味着对任何解决方案的更改都会导致我们的TeamCity CI服务器进行全面重建。
不一定,你可以为每个解决方案创建不同的构建,并仅在它们自己的解决方案文件夹上设置TeamCity触发器。
附注2:我给出了一个比预期更长的答案;-) 希望能对你有所帮助...