[PATCH] D22463: [RFC] Moving to GitHub Proposal: NOT DECISION!

Justin Lebar via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 20 00:27:46 PDT 2016


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





More information about the cfe-commits mailing list