We are thinking of putting our current TFVC team projects into one GIT monorepo.
None of the arguments for or against monorepos have been very convincing. We are having issues with linking different team projects in TFVC right now, which is why we consider a monorepo. We consider GIT since TFVC has serious issues with its merge and detection of file moves. That seems 10-20 years behind what should be possible, even when directly telling the Visual Studio IDE that it is a move and not a delete/add.
I am wondering now about build speed when using a monorepo.
Is the build agent clever enough to
- only get what it needs (folders/files)
- not get any history
thus speeding up the process?
Or is normally the whole repo cloned, I would have to do any build steps like assembly versioning after the build, only do an update on a new build, and also for good measure (there were always left over files for TFVC) delete the source files on the build agent once a week?
And about multiple build definitions: Does each build definition has to get its own clone of the repository? There would be something like 5 builds in total, totally different solutions and also different branches of the main solution.
Additional info: team is small (we are not Google), whole repo size is ~1-2GB. We are on TFS 2017 right now, with no immediate plans to upgrade.