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

Mehdi Amini via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 7 10:35:25 PDT 2016


> On Sep 7, 2016, at 10:30 AM, dag at cray.com wrote:
> Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org> writes:
>> Right, we actually have a proposal to take what is in the current SVN
>> repo here: http://llvm.org/svn/llvm-project/ and migrate this to a
>> single repository.
>> I was not sure if you were referring to this proposal (monorepo) or to
>> the recent emails about “external libraries” that GCC uses like gmp
>> and mpfr. 
>> You can find more details here: https://reviews.llvm.org/D24167
>> If you have some good reasons why you would think a proposal would be
>> problematic to you, or one would better fit your workflow, feel free
>> to expose them now.
> It could be problematic for us depending on how the monorepository is
> structured.  We reference the LLVM git repository directly and use it to
> migrate to new versions, pick patches, etc.  If LLVM proper were part of
> a larger repository that becomes more difficult to do because the commit
> file paths won't match.  We'd be back to essentially manual diff+patch
> which is quite a step backward from the smoth git-oriented process we
> use now.

Can you clarify what you mean? Which part of the process would quite manual patch that wouldn’t otherwise?

> The document says that the individual git repositories will remain.
> Does that mean the monorepository is using git-submodule to manage the
> aggregate repository?

First, have you read this document: https://reviews.llvm.org/D24167 <https://reviews.llvm.org/D24167> ?

TLDR: The answer is no: you have to see it as it is today, i.e. a single SVN repo containing all the sub-projects, and “exports” in individual repositories.
The same thing after: a single git repo containing all the subprojects side-by-side and the *same* “exports” in individual repositories.

>  If so that should work for us.  I'm more
> concerned about the case where the individual repositories' histories
> were interwoven into a single repository and the individual repositories
> went away.
> I have extensive experience transitioning a very large project from a
> set of individual repositories to a single repository where we interwove
> the individual histories.  It was the right direction for us but I don't
> think it would be for LLVM.
> I completely understand the benefits of a monorepository.  One of the
> biggest for us was the ability to git-bisect across components.  How
> does git-bisect work with submodules?  I have very little experience
> with submodules but would like to learn more.

Fairly easy, the document mentions it in the examples.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160907/0602283b/attachment.html>

More information about the llvm-dev mailing list