<div><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 29, 2020 at 10:15 PM Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">On Mon, Jun 29, 2020 at 9:43 PM Mehdi AMINI via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hey Duncan,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 29, 2020 at 8:28 PM Duncan Exon Smith via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>To facilitate collaboration on an upstreaming effort (see "More context" below), we'd like to <b>push a branch</b> (with history) called "<b>staging/apple</b>" to <a href="http://github.com/llvm/llvm-project" target="_blank">github.com/llvm/llvm-project</a> to serve as an official contribution to the LLVM project. This enables motivated parties to work with us to craft incremental patches for review on Phabricator. This branch would live during the effort and then be deleted after. It would not be merged.</div><div><br></div><div><div><b>Does this seem fine?</b> If you have a strong objection, please share your concern.</div></div><div><br></div><div><div>For reference, I ran some experiments:</div><div><ul><li>A `--bare` clone (just the Git database) I have of <a href="http://github.com/llvm/llvm-project" target="_blank">github.com/llvm/llvm-project</a> was around ~1GB. Fetching this branch from <a href="http://github.com/apple/llvm-project" target="_blank">github.com/apple/llvm-project</a> increased it to ~1.2GB. Running `git gc --aggressive` brought it down to ~850MB.</li><li>The worktree of the "master" branch is ~1GB. Adding the Git database gives ~2GB, ~2.2GB, and ~1.9GB.</li><li>The diff of the proposed staging/apple branch is 3.1MB at `-U0`, 4.1MB at `-U3`, and 32MB at `-U999999` (Phabricator settings).</li></ul></div></div><div><br></div><div><br></div><div style="font-size:14px"><b>More context</b></div><div><br></div><div>We're making a major push over the next few months to upstream changes that have accumulated over time in the branch called "apple/master" at <a href="http://github.com/apple/llvm-project" target="_blank">github.com/apple/llvm-project</a>. It has always been a non-goal for us to have changes, but over the years we've accumulated a non-trivial diff vs. <a href="http://github.com/llvm/llvm-project" target="_blank">github.com/llvm/llvm-project</a>. This includes (but is not limited to) tweaks/features related to tuple hashing, modules hashing, source attributes, API notes, pointer authentication, indexing-while-building, and local refactoring.</div><div><br></div><div>Our goal is to eliminate this difference. Besides paying off some debt, this upstreaming effort unblocks the Swift compiler (<a href="http://github.com/apple/swift" target="_blank">github.com/apple/swift</a>) from building directly against an upstream checkout of LLVM. That's why non-Apple contributors are motivated to help craft incremental patches.</div><div><br></div><div><br></div><div style="font-size:14px"><b>Alternatives considered</b></div><div><br></div><div><div>As an alternative, we could post a GitHub pull request and close it without merging. From our perspective this would serve the same purpose. However, pull requests are contentious in LLVM.</div><div><br></div><div>Another alternative is to post a bulk Phabricator review and then "abandon" it. However, this has the disadvantage of not contributing the history (~30k commits).</div></div></div></blockquote><div><br></div><div>Seeing the alternatives, if a closed pull-request would fit your use-case, then I'm not sure why you need the branch to actually live in the monorepo instead of in any fork (<a href="http://github.com/apple/llvm-project" target="_blank">github.com/apple/llvm-project</a> or another)? It seems publicly accessible the same way?</div></div></div></div></div></blockquote><div><br></div><div>As I understand it, a key need is to explicitly contribute this to the LLVM project to make it unambiguous that it has been contributed and is completely available for folks not at Apple to iterate on the code and turn it into code-reviewable chunks.</div></div></div></blockquote><div dir="auto"><br></div><div dir="auto">Ah, I didn’t understand this from the original description, makes sense now! Thanks.</div><div dir="auto"><br></div><div dir="auto">FWIW a branch seems appropriate to me.</div><div dir="auto"><br></div><div dir="auto">— </div><div dir="auto">Mehdi</div><div dir="auto"><br></div><div dir="auto"><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div></div><div><br></div><div>So whatever happens needs to be quite explicit in its nature as a contribution. IMO, a branch of the repository definitely qualifies.</div><div><br></div><div>IMO, a pull request isn't as clear given that they haven't been used for contributions before. This is not a time to be innovative IMO. A branch as a staging location has been used many times over the history of the project though and seems nicely unambiguous in that regard.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"></blockquote></div></div><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div>Your initial description mentions "collaboration on an upstreaming effort", maybe you can elaborate a bit on what this collaboration would look like and how these patches would end up in master?</div><div><br></div><div>Thanks,</div><div><br></div><div>-- </div><div>Mehdi</div><div><br></div><span style="color:rgb(0,0,0);font-family:-webkit-standard;font-size:medium"></span><div> </div></div></div></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>
</blockquote></div></div>