<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I’m just now catching up on this massive thread after being on vacation last week, and I have a few thoughts I’d like to share.<div class=""><br class=""></div><div class="">First and foremost please don’t consider lack of dissent on the thread as presence of consensus. The various git-related threads on LLVM-dev lately have been so active and contentious that I think a lot of people are zoning out on the conversations. As supporting evidence of this, I was discussing this thread yesterday around the office yesterday and had quite a few people responding something along the lines of “they’re proposing what?”.</div><div class=""><br class=""></div><div class="">I think it would be great for us to have several different proposals for how the git-transition could work, and have a survey to get people’s opinions. I know this has been discussed repeatedly, and I want to put in my vote in favor of having a survey that takes into account multiple different approaches.</div><div class=""><br class=""></div><div class="">WRT the actual proposal in this thread, I’m strongly opposed to a mono-repository. While I understand the argument that the full clone’s cost on disk space is minimal compared to an LLVM object directory, what about for contributors that contribute to the smaller runtimes projects but *not* to LLVM or Clang. A contributor that only contributes to libcxx or compiler-rt being forced to do a full clone of all the LLVM projects in order to push a patch kinda sucks.</div><div class=""><br class=""></div><div class="">I want to point out a few workflows people may not be considering.</div><div class=""><br class=""></div><div class="">Clang can be built against an installed LLVM. I know this workflow is used by some people because I’ve broken it in the past and had to fix it. With a mono-repo this workflow gets a bit more complicated because you’d need to do sparse checkouts, and it probably means we should just nuke the workflow entirely because there is no real value added by having it.</div><div class=""><br class=""></div><div class="">Compiler-RT’s sanitizers are used with GCC; no LLVM required. While for the common use case maintaining sparse repository mirrors would limit impact of this on users, should any GCC user want to contribute to Compiler-RT, you’re forcing them to clone a much larger repository than necessary.</div><div class=""><br class=""></div><div class="">The same problem with Compiler-RT’s sanitizers also applies to libcxx, libcxxabi, libunwind, and potentially any other runtime library projects that we may create in the future.</div><div class=""><br class=""></div><div class="">Beyond all that I want to point out that the git multi-repository story is basically the same thing we have today with SVN except for the absence of a monotonically increasing number that corresponds across repositories. While admittedly you do get a linear history with using the mono-repository, that isn’t the only way to solve the problem, and I don’t really think that the benefit (not needing to write some tooling) justifies the increased burden applied to contributors that don’t use the full LLVM family of projects.</div><div class=""><br class=""></div><div class="">I think we have some pretty strong evidence in the form of the github fork counts (<a href="https://github.com/llvm-mirror/" class="">https://github.com/llvm-mirror/</a>) that most people aren’t using all of the LLVM projects. In fact, by that evidence Clang (the second most popular project) is forked less than 2/3 as many times as LLVM.</div><div class=""><br class=""></div><div class="">-Chris</div><div class=""><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jul 26, 2016, at 11:31 AM, Renato Golin via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">On 26 July 2016 at 19:28, Sanjoy Das via llvm-dev<br class=""><<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:<br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">Even if it were possible, I would still keep my upstream checkout<br class="">separate just as a safety measure, to keep from sending private stuff<br class="">upstream by accident.<br class=""></blockquote><br class="">Just FYI, this is our (Azul's) workflow as well, and for similar<br class="">reasons.<br class=""></blockquote><br class="">Same here.<br class=""><br class="">cheers,<br class="">--renato<br class="">_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></div></blockquote></div><br class=""></div></div></body></html>