monorepo.tools icon indicating copy to clipboard operation
monorepo.tools copied to clipboard

Consider adding section about VCS

Open RedwanFox opened this issue 1 year ago • 2 comments

Monorepos tend to become very large and optionally have large binary blobs in them (for example art content in gamedev). So different VCS should be considered. For example git as-is is not suitable for large binary objects, etc. Also, it would be great to talk about integration of VCS and build system such as to be able only to checkout folder of particular projects and all of their dependencies.

RedwanFox avatar Jul 17 '22 18:07 RedwanFox

@RedwanFox Interesting idea.

optionally have large binary blobs in them (for example art content in gamedev)

Storing large blobs, in general, doesn't work very well with Git. Though it is more a VCS thing than strictly related to monorepos. Ofc, If you combine it with a monorepo the problem becomes more apparent, and quicker. Let me think about how to potentially wire this into the page. We want to keep it as lean as possible but still informative.

Also, it would be great to talk about integration of VCS and build system such as to be able only to checkout folder of particular projects and all of their dependencies.

I was actually planning to have some content around this. Git allows you to do sparse-checkouts, and with Nx in particular, you have programmatic access to its project graph. As such you can easily create a script which would allow you to say something like my-customscript checkout proj1 and it would be able to leverage the project graph to checkout proj1 and all the other projects it depends on. Could be an interesting use case for very large repos. Although truth be told, as part of the the consulting activity I have seen some massive repos, and Git was usually the last issue. It is pretty powerful 😃

juristr avatar Jul 19 '22 11:07 juristr

Storing large blobs, in general, doesn't work very well with Git.

It's should be mentioned in context of Git LFS or microsoft git fork with patches especially for monorepos.

Though it is more a VCS thing than strictly related to monorepos.

Without working VCS you won't get successfully working monorepo and with rising repo size execution times of default commands such as status increase dramatically. https://github.blog/2022-06-29-improve-git-monorepo-performance-with-a-file-system-monitor/

RedwanFox avatar Jul 19 '22 12:07 RedwanFox