Virtual Mono-Repo & Bazel
summary
Wix needs reproducible head dependency across many repos so a wrapper script plus a microservice storing master versions and branch-specific version files in git is built. Master resolves from the server (not tracked) while non-master branches track pointer files with git hooks, avoiding merge conflicts and enabling offline work. Resolution time drops from ~10s (git ls-remote) to ~1s, CI uses server-resolved starlock files, and the mixed approach proves operationally workable though it requires pruning old pointer files.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 3:14Monorepos vs many repos
- 5:21Second party head dependency
- 8:17Reproducibility in builds
- 9:42Head dependency challenges
- 10:28Failed attempt with many repos
- 12:38Wrapper script solution
- 15:08Custom microservice approach
- 17:42Microservice limitations
- 18:03Git version tracking
- 20:54Hybrid branch solution
- 23:41Final solution pros and costs
- 25:30Versioning details
- 27:16Commit ordering in repos
- 28:01Optimizing repo dependencies
related talks
42mMake local development (with Bazel) great again!
05mHigh Speed Monorepos with high quality DX
19m"Embracing Monorepo and LLM Evolution"
21mFast/Correct: Choose two using Bazel for a monorepo
11mPerformant Bazel Builds for Web Monorepos at Scale
46mExploring the power of monorepos: When and why to use them
06mHow I Learned to Stop Worrying and Love the Mono Repo
21mGit submodules: we have monorepo at home
