jlebar added a comment.

In https://reviews.llvm.org/D22463#489461, @rengolin wrote:

> You will not be required to use submodules at all, as we'll all use the 
> individual projects, like we have always been. I don't understand why people 
> keep going back to it.


There is a key use case that is not supported by the current setup.  This is 
something that I -- and basically anyone who works on an llvm project other 
than llvm itself -- do every day.  It will be supported with submodules, but 
badly.  It is not supported at all today, and it will not be supported at all 
in the proposed world if I don't use submodules.  Maybe the people who keep 
coming back to this have not explained this use-case clearly, so let me try.

The use-case is: Maintaining a branch which contains changes to clang (or your 
favorite subproject) and also is locked to a specific revision of llvm.  That 
is, I can check out branch A or branch B of my changes to clang, and it 
automatically checks out a corresponding revision of llvm that is tied to the 
branch.

Again, we can make this work with submodules, but it's a giant pain, see my 
earlier comment.  It works with zero effort if we have a monolithic repository. 
 This would be 'uge for anyone who works on clang (or any other subproject 
that's not llvm itself) and uses branches.

> Having a single repository was part of the original proposal for years, and 
> every time it was shot down as impractical.


I've read as many of these as I can find in the past few hours, and every 
argument I have found is, in my evaluation, very likely overblown or incorrect. 
 There is strong evidence for this, in the single git repository that already 
exists (and includes the test-suite, so is much larger than what I propose), 
and also in the fact that adding everything to a single git repository will not 
more than ~double the size of the llvm git repo.  (I'll have better numbers 
tomorrow, don't quote me on that just yet.)

Moreover, the current setup of unrelated git repos can be *exactly duplicated* 
by making sparse checkouts of the monolithic repository.  You can clone the big 
repo and then check out only the directories you want (so it's like the others 
never existed, beyond their presence in your .git packfiles).  Or if you want 
to be able to check out different revisions of (say) clang and llvm, you can do 
that too: Clone the big repo and make two shallow working copies, one for llvm 
and the other for clang.  You can even place the clang working copy in 
tools/clang of the llvm working copy, so it functions identically to the 
current setup in almost every way.

The critical point is that it's trivial to use sparse checkouts to make the 
monolithic repository behave identically to separate repos.  But it is 
impossible, as far as I'm aware, to make separate repos behave like a 
monolithic repository.  So the monolithic repository is strictly more powerful.

> Indeed, this is not the place for such discussion, but unless you can finish 
> the discussion thus week, I suggest you make you point clear in the survey 
> instead of delaying the process.


The e-mail you sent out two days ago said two weeks.  Can you give me a bit 
more than three days?

> I'm not pushing for *my* solution. Thus *has* been discussed already to 
> exhaustion. The current agreement was that we'd do a survey on the proposal, 
> and that's what we need to do. Anything else will just send us back to square 
> one and I seriously don't have the stamina to keep going round in circles.

> 

> Ie. Please, try to be considerate.


I am very grateful for the work that you're doing here.  I have participated in 
efforts very similar to this one in the past, and I appreciate how difficult 
and taxing they can be, and also how frustrating it can be to be see perfect be 
made the enemy of the good.  In fact I quit my last job in part over friction 
created by a botched move to git.

But.  I would ask you to please give me a few days to work with the community 
to dig in to this specific question.  If I am right, it will be a boon for all 
of us every time we type a command that starts with "git".  And if I'm wrong, 
I'll buy you a well-deserved beer or three, and we'll forget it and move on.

Does that sound agreeable to you?


https://reviews.llvm.org/D22463



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to