<story><title>The largest Git repo</title><url>https://blogs.msdn.microsoft.com/bharry/2017/05/24/the-largest-git-repo-on-the-planet/</url></story><parent_chain><item><author>js2</author><text>&lt;i&gt;Windows, because of the size of the team and the nature of the work, often has VERY large merges across branches (10,000’s of changes with 1,000’s of conflicts).&lt;/i&gt;&lt;p&gt;At a former startup, our product was built on Chromium. As the build&amp;#x2F;release engineer, one of my daily responsibilities was merging Chromium&amp;#x27;s changes with ours.&lt;p&gt;Just performing the merge and conflict resolution was anywhere from 5 minutes to an hour of my time. Ensuring the code compiled was another 5 minutes to an hour. If someone on the Chromium team had significantly refactored a  component, which typically occurred every couple weeks, I knew half my day was going to be spent dealing with the refactor.&lt;p&gt;The Chromium team at the time was many dozens of engineers, landing on the order of a hundred commits per day. Our team was a dozen engineers landing maybe a couple dozen commits daily. A large merge might have on the order of 100 conflicts, but typically it was just a dozen or so conflicts.&lt;p&gt;Which is to say: I don&amp;#x27;t understand how it&amp;#x27;s possible to deal with a merge that has 1k conflicts across 10k changes. How often does this occur? How many people are responsible for handling the merge? Do you have a way to distribute the conflict resolution across multiple engineers, and if so, how? And why don&amp;#x27;t you aim for more frequent merges so that the conflicts aren&amp;#x27;t so large?&lt;p&gt;(And also, your merge tool must be incredible. I assume it displays a three-way diff and provides an easy way to look at the history of both the left and right sides from the merge base up to the merge, along with showing which engineer(s) performed the change(s) on both sides. I found this essential many times for dealing with conflicts, and used a mix of the git CLI and Xcode&amp;#x27;s opendiff, which was one of the few at the time that would display a proper three-way diff.)</text></item></parent_chain><comment><author>Peaker</author><text>When you have that many conflicts, it&amp;#x27;s often due to massive renames, or just code moves.&lt;p&gt;If you use git-mediate[1], you can re-apply those massive changes on the conflicted state, run git-mediate - and the conflicts get resolved.&lt;p&gt;For example: if you have 300 conflicts due to some massive rename, you can type in:&lt;p&gt;&lt;pre&gt;&lt;code&gt;  git-search-replace.py[2] -f oldGlobalName&amp;#x2F;&amp;#x2F;&amp;#x2F;newGlobalName
  git-mediate -d
  Succcessfully resolved 377 conflicts and failed resolving 1 conflict.
  &amp;lt;1 remaining conflict shown as 2 diffs here representing the 2 changes&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;medium.com&amp;#x2F;@yairchu&amp;#x2F;how-git-mediate-made-me-stop-fearing-merge-conflicts-and-start-treating-them-like-an-easy-game-of-a2c71b919984&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;medium.com&amp;#x2F;@yairchu&amp;#x2F;how-git-mediate-made-me-stop-fea...&lt;/a&gt;&lt;p&gt;[2] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;da-x&amp;#x2F;git-search-replace&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;da-x&amp;#x2F;git-search-replace&lt;/a&gt;</text></comment>
<story><title>The largest Git repo</title><url>https://blogs.msdn.microsoft.com/bharry/2017/05/24/the-largest-git-repo-on-the-planet/</url></story><parent_chain><item><author>js2</author><text>&lt;i&gt;Windows, because of the size of the team and the nature of the work, often has VERY large merges across branches (10,000’s of changes with 1,000’s of conflicts).&lt;/i&gt;&lt;p&gt;At a former startup, our product was built on Chromium. As the build&amp;#x2F;release engineer, one of my daily responsibilities was merging Chromium&amp;#x27;s changes with ours.&lt;p&gt;Just performing the merge and conflict resolution was anywhere from 5 minutes to an hour of my time. Ensuring the code compiled was another 5 minutes to an hour. If someone on the Chromium team had significantly refactored a  component, which typically occurred every couple weeks, I knew half my day was going to be spent dealing with the refactor.&lt;p&gt;The Chromium team at the time was many dozens of engineers, landing on the order of a hundred commits per day. Our team was a dozen engineers landing maybe a couple dozen commits daily. A large merge might have on the order of 100 conflicts, but typically it was just a dozen or so conflicts.&lt;p&gt;Which is to say: I don&amp;#x27;t understand how it&amp;#x27;s possible to deal with a merge that has 1k conflicts across 10k changes. How often does this occur? How many people are responsible for handling the merge? Do you have a way to distribute the conflict resolution across multiple engineers, and if so, how? And why don&amp;#x27;t you aim for more frequent merges so that the conflicts aren&amp;#x27;t so large?&lt;p&gt;(And also, your merge tool must be incredible. I assume it displays a three-way diff and provides an easy way to look at the history of both the left and right sides from the merge base up to the merge, along with showing which engineer(s) performed the change(s) on both sides. I found this essential many times for dealing with conflicts, and used a mix of the git CLI and Xcode&amp;#x27;s opendiff, which was one of the few at the time that would display a proper three-way diff.)</text></item></parent_chain><comment><author>malnourish</author><text>For 3 way merging, I&amp;#x27;ve had good luck with beyondcompare</text></comment>