When Microsoft's JavaScript repository was growing faster than Office's, it was clear that something was wrong. A Microsoft engineer explains how the repo
The culprit: name-hash collisions. With files like changelog.md and changelog.json, Git found all kinds of differences with each commit even though there often were none, which gradually added 173GB of unnecessary bloat. However, the changelogs were in completely different packages. The algorithm checked only the last 16 characters of the path, so package differences were not considered.
thanks for the reply, but i think i got that. from the linked article:
For example, if you changed repo/packages/foo/CHANGELOG.json, when git was getting ready to do the push, it was generating a diff against repo/packages/bar/CHANGELOG.json! This meant we were in many occasions just pushing the entire file again and again, which could be 10s of MBs per file in some cases, and you can imagine in a repo our size, how that would be a problem.
but wouldn't these erroneous diffs not show up in git diff? it seems that they were pushing (maybe automatically?)without inspecting the diffs first