Monorepo (بہت سی projects/services کے لیے ایک repository) اور polyrepo (ہر project کے لیے الگ repository) کوڈ کو متعدد projects میں منظم کرنے کی دو حکمت عملیں ہیں۔ ہر ایک میں تعاون، tooling، اور scaling کو متاثر کرنے والے نمایاں trade-offs ہیں — انہیں سمجھنا اہم architectural فیصلوں کو آگاہ کرتا ہے۔
Monorepo — سب کچھ ایک repo میں
Many projects/services/libraries in a SINGLE repository:
✓ SHARED code/libraries easy to use and refactor (one place, atomic changes)
✓ ATOMIC commits across projects (change an API and all its consumers together)
✓ Unified tooling, versioning, CI; consistent standards; easy cross-project visibility
✓ Simplified dependency management (one version of shared code)
✗ Repo can get HUGE (needs scaling tooling — sparse checkout, build caching)
✗ Needs sophisticated build/CI tooling (Nx, Turborepo, Bazel) to be efficient
✗ Broad access; CI must be smart (only build what changed)
→ Used by Google, Meta, etc. (with heavy tooling investment).
