&gt; Non-linear history is considered an &quot;anti-feature&quot; by many, and the LLVM community runs a primary SVN server; users submit via git-svn.<p>&gt; Having cheap and lightweight branching is what leads to merge headaches. In fact, (from one Tech Talk), I believe that Google runs a single branch to evade merge problems altogether.<p>Running a single branch also gets rid of the nonlinear history problem.  We do it where I work and it works great.  Every developer submits PRs from feature branches on their forked copy of the main repo, which get merged in after review and testing.  At any time, we can roll back to the previously deployed version of prod if we have to.<p>Mutable history is also nice for these forked repos, since it allows us to squash commits and eliminate any wrong turns we take in the development process, leaving the main repo&#x27;s history cleaner.