I'm pleased to announce the immediate availability of 2 new features on hg.mozilla.org: faster blame rendering and a mozilla-central repo with CVS history. You can find these features at:
* https://hg.mozilla.org/experimental/mozilla-central-gd * https://hg.mozilla.org/experimental/mozilla-central-cvs experimental/mozilla-central-gd is a straight clone of mozilla-central with more efficient Mercurial storage and the fast blame feature enabled. experimental/mozilla-central-cvs contains CVS history. It should update within seconds of pushes to mozilla-central. It also has fast blame enabled. Note: there is no guarantee the commit hashes on this repo are stable. Please don't rely on that! If you encounter any issues or have feature requests, please file bugs in the hg.mozilla.org bugzilla component or track me down. Also, I'd love to hear feedback if these features are beneficial to you. Read on for low-level details. The mozilla-central-cvs repo was created by converting the CVS history from the gecko-dev Git repo to Mercurial. Then, all commits from mozilla-central were essentially replayed on top of that history. This was the easiest way to perform a conversion. This does preserve all the oddities with both histories. If I had infinite time, I'd do a "proper" conversion that prunes badness and does things like rename detection. I'd like to leave the door open to doing this in the future: that's partially why "experimental" is in the URL. Bug 1265493 tracks these remaining improvements. For changesets converted from mozilla-central, the HTML output will render a link to the original mozilla-central changeset. See the "converted from" line on e.g. https://hg.mozilla.org/experimental/mozilla-central-cvs/rev/ab117d946959. The faster blame rendering comes courtesy of the "fastannotate" extension available from https://bitbucket.org/facebook/hg-experimental/. The faster blame rendering is, well, fast. We can see this clearly when invoking the `blame` CLI command against the gecko-dev Git and mozilla-central-cvs Mercurial repos using Git 2.11.0 and Mercurial 4.0: dom/base/nsDocument.cpp git blame: 8.6s hg blame: 8.6s hg fastannotate: 0.4s layout/base/nsCSSFrameConstructor.cpp git blame: 17.7s hg blame: 11.3s hg fastannotate: 0.4s While vanilla Mercurial was already faster or the same speed as Git, Mercurial with fastannotate makes things effectively instantaneous - up to 44x faster than Git! A wrinkle in this awesome performance is that it isn't as obvious in the web interface for large files. This is because a) the server spends a lot of time in the templating mechanism generating HTML b) I think the emitted HTML is causing browsers to behave a bit sub-optimally (Searchfox seems to behave much better in this area). I believe both these issues can be improved in Mercurial 4.1. Although a web performance guru might have to give suggestions to optimize HTML/layout. (Please get in touch!) Anyway, if you load a large blame page like https://hg.mozilla.org/experimental/mozilla-central-cvs/annotate/tip/layout/base/nsCSSFrameConstructor.cpp the output will start streaming immediately, but it could take a few seconds for everything to appear. Still, the overall page will load significantly faster than before because the core blame algorithm is running faster. e.g. the HTTP request for nsCSSFrameConstructor.cpp serves in 2.4s vs 23.6s from my machine. While not as fast as the 28x speedup to the core algorithm, a 10x speedup is definitely noticeable :) _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform