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

Lang Hames via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 28 19:32:02 PDT 2016


Hi Mehdi,

This a narrow view IMO: the criteria #1 Chris mentioned to include projects
> in the monorepo was " must be tightly coupled to specific versions”.
> It means that even with the test suite (and possibly some runtime) out of
> the monorepo, all the software that is tightly coupled would be in the
> monorepo, and that alone would be enough to alleviate the needs for (most
> of the) tooling/infrastructure.


Fair point, but coupling isn't binary: even the test-suite is coupled to
the versions of clang that can compile it, it's just relatively loose
compared to LLVM/clang.

I find it a fairly different scale to clone 3 repos on a bot versus having
> to keep multiple repositories *in sync* (i.e. cross repository
> synchronization).


I think it depends on the nature of the tools that are required. Bots are
relatively simple since they're only reading from the repos, not writing.
They're not the only use-case I have in mind though.

Different problems, different tools… I’m against artificially creating
> “problems" for upstream developers only because the tooling to solve them
> works for downstream users.


I don't think these are actually different problems: I would guess that the
problem of collecting some subset of the LLVM projects into a usable
source-tree is shared by many downstream users, and it's common in my
workflows (e.g. just checking out llvm and lld). It will have to be solved
by someone, since downstream users need it even if we adopted a mono-repo.
A shared solution (if it's possible) may be an opportunity to both share
infrastructure with downstream projects and adopt a more modular approach
to the LLVM project sources.

I'm staying deliberately light on specifics here. As I said I don't have
strong feelings yet -- I'm still digesting all the ideas in this thread. To
the extent that I have a gut feeling though, this feels like it introduces
very strong coupling between LLVM project sources (more than is required by
the projects APIs) for the sake of convenience, so I'm trying to consider
the alternatives.

Cheers,
Lang.


On Thu, Jul 28, 2016 at 6:41 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:

>
> On Jul 28, 2016, at 6:23 PM, Lang Hames via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
> Aaaand I'm (mostly) caught up. Phew.
>
> FWIW Chris B is right: I had been put off commenting on this thread by the
> length, and the number of git discussions that have come before this. He
> convinced me to make the effort to put my 2 cents in though - thanks Chris.
>
> So - for my use-case I don't have strong feelings one way or the other*
> <https://www.youtube.com/watch?v=fpaQpyU_QiM>. That said, something about
> the discussion so far strikes me as dissonant: If we're going to break out
> some sub-projects (the test-suite for licensing reasons, the runtimes for
> modularity) then it's not really a mono-repo any more. It's a multi-repo
> where we've collapsed some (but not all) of the existing repos.
>
>
> This a narrow view IMO: the criteria #1 Chris mentioned to include
> projects in the monorepo was " must be tightly coupled to specific
> versions”.
> It means that even with the test suite (and possibly some runtime) out of
> the monorepo, all the software that is tightly coupled would be in the
> monorepo, and that alone would be enough to alleviate the needs for (most
> of the) tooling/infrastructure.
>
>
> To the extent that we have to build tooling to support multiple-repos
> (auto-mergers for test bots, command line utils for devs who want the main
> repo plus tests plus ...), could we re-use that to keep the existing
> modular project setup?
>
>
> I find it a fairly different scale to clone 3 repos on a bot versus having
> to keep multiple repositories *in sync* (i.e. cross repository
> synchronization).
>
>
> This might be a fairly low-benefit proposition if the tools we develop
> were only usable by in-tree projects, but there are many other users of
> LLVM (Swift leaps to mind since I'm at Apple, but there are many others)
> who might appreciate the ability to use LLVM-provided tools to pick-and-mix
> LLVM projects into their repos. Otherwise, every downstream user will have
> to roll some version of these tools themselves.
>
>
> Different problems, different tools… I’m against artificially creating
> “problems" for upstream developers only because the tooling to solve them
> works for downstream users.
>
>> Mehdi
>
>
>
> On Thu, Jul 28, 2016 at 3:19 PM, Renato Golin via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> On 28 July 2016 at 22:12, Chris Bieneman <beanz at apple.com> wrote:
>> > It is worth pointing out the Jenkins job that runs that is a playground
>> I setup for myself. It is nowhere near production ready, and it will fail
>> frequently as I iterate messing around with it.
>>
>> Sure, I think that's implied.
>>
>> cheers,
>> --renato
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160728/565c5843/attachment.html>


More information about the llvm-dev mailing list