Rewriting RubyGems.org Git History
blog.rubygems.org
blog.rubygems.org
Docker itself used a similar strategy for their build process: the recommended build process uses containers to build the Docker binary, so they made a precompiled binary available that was crafted "the hard way" that could then be used for running the saner build process.
http://git-scm.com/docs/git-filter-branch
But you can do almost anything via custom scripts.
Don't be deceived by the "java" invocations, it's written in Scala, so it's HN-approved!
First is Streaming Clones[1], whereby Mercurial server just takes all the files from the repository and transmits them over the transport connection, significantly decreasing TTFB.
The second is Largefiles extension[2], which turns Mercurial into more of a CVCS, but allows for efficient storage and retrieval of large binary files.
[1]: https://hglabhq.com/blog/2014/6/20/working-with-mercurial-ov... [2]: http://mercurial.selenic.com/wiki/LargefilesExtension