[llvm-dev] [RFC] One or many git repositories?

Robinson, Paul via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 21 08:00:41 PDT 2016

> I don't know man, when I create a branch to save my clang work I just
> create a branch with the same name in all the other repos I have checked
> out, then it just stays in the state I left it in as I go do other
> stuff. This kind of problem just hasn't really come up for me.

I find it too confusing to try to maintain several different patch
threads in one place.  For one thing I'd have to keep separate build
directories anyway, why not just have entire separate clones and 'cd'
to the right one to do whatever piece of work.  Much faster than doing
checkouts all the time and forgetting which build directory to use.
Clones are relatively cheap, I keep ten or so lying around each with
its own purpose.

On another topic, the sparse-checkout feature looks cool but it's
also complicated.  I don't need all the projects all the time but
sometimes a commit will break something and suddenly I'll need to get
clang-tools-extra or lld or whatever. I don't want to bother keeping
them all around all the time.

Finally, the major drawback of a single huge repo IMHO:
In git, to push a commit you must have it at the remote HEAD.
If HEAD has changed you need to rebase/rebuild/retest/retry.
With a single monster repo, a commit to 'lld' means I have to
go through this pain to put in my 'clang' tweak.  Why is that good?
I doubt a sparse-checkout helps here.

More information about the llvm-dev mailing list