[clangd-dev] [llvm-dev] Subprojects, GitHub, and the Monorepo

David Greene via clangd-dev clangd-dev at lists.llvm.org
Mon Oct 22 10:27:04 PDT 2018

Brian Cain via llvm-dev <llvm-dev at lists.llvm.org> writes:

> Can't we / shouldn't we create decomposed repos by partitioning
> commits made to the monorepo into corresponding ones made to
> per-project repo "mirrors"? Certainly if we can, we should. Seems to
> me that even monorepo commits spanning projects could be broken down
> and applied to independent repos. Perhaps it's slightly more
> interesting when top-level content starts to be more common, but an
> "llvm-top" or "llvm-general" individual repo seems feasible. Even if
> they're not the canonical repos for submitting changes, it's still a
> valuable idea.

In a vacuum, that might be preferable.  But we have existing per-project
git mirrors.  There are two ways to partition monorepo commits and both
are bad:

- Create new per-project git repos and partition monorepo commits to

- Erase the existing per-project git mirrors and create new ones in
  their place, partitioning monorepo commits to them

The first creates multiple per-project git repositories and will cause

The second effectively rewrites history for downstream users of the
per-project repositories.

The current proposal as I understand it recommends sparse checkouts to
work with something less than the full monorepo.  I don't have any
experience with sparse checkouts and we're unlikely to use it so I can't
really comment on how useful it is, except it will prevent the two
scenarios above and therefore seems good to me.

Of course, that's assuming that SVN commits continue to be mirrored to
the per-project repositories (as well as the monorepo) for the time
being.  If that's an incorrect assumption I'd like to know now.


More information about the clangd-dev mailing list