<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">To facilitate collaboration on an upstreaming effort (see "More context" below), we'd like to <b class="">push a branch</b> (with history) called "<b class="">staging/apple</b>" to <a href="http://github.com/llvm/llvm-project" class="">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 class=""><br class=""></div><div class=""><div class=""><b class="">Does this seem fine?</b> If you have a strong objection, please share your concern.</div></div><div class=""><br class=""></div><div class=""><div class="">For reference, I ran some experiments:</div><div class=""><ul class="MailOutline"><li class="">A `--bare` clone (just the Git database) I have of <a href="http://github.com/llvm/llvm-project" class="">github.com/llvm/llvm-project</a> was around ~1GB. Fetching this branch from <a href="http://github.com/apple/llvm-project" class="">github.com/apple/llvm-project</a> increased it to ~1.2GB. Running `git gc --aggressive` brought it down to ~850MB.</li><li class="">The worktree of the "master" branch is ~1GB. Adding the Git database gives ~2GB, ~2.2GB, and ~1.9GB.</li><li class="">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 class=""><br class=""></div><div class=""><br class=""></div><div style="font-size: 14px;" class=""><b class="">More context</b></div><div class=""><br class=""></div><div class="">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" class="">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" class="">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 class=""><br class=""></div><div class="">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" class="">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 class=""><br class=""></div><div class=""><br class=""></div><div style="font-size: 14px;" class=""><b class="">Alternatives considered</b></div><div class=""><br class=""></div><div class=""><div class="">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 class=""><br class=""></div><div class="">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></body></html>