Yesterday we flipped the switch to publish our very first experimental OpenJDK Mercurial repositories on the open Internet.
So, how long does it take to clone a complete JDK 7 forest?
% time hg fclone http://hg.openjdk.java.net/jdk7/MASTER [.] requesting all changes adding changesets adding manifests adding file changes added 2 changesets with 25 changes to 25 files 25 files updated, 0 files merged, 0 files removed, 0 files unresolved [corba] requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 1368 changes to 1368 files 1368 files updated, 0 files merged, 0 files removed, 0 files unresolved [hotspot] requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 2894 changes to 2894 files 2894 files updated, 0 files merged, 0 files removed, 0 files unresolved [jaxp] requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 1972 changes to 1972 files 1972 files updated, 0 files merged, 0 files removed, 0 files unresolved [jaxws] requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 2306 changes to 2306 files 2306 files updated, 0 files merged, 0 files removed, 0 files unresolved [jdk] requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 16526 changes to 16526 files 16526 files updated, 0 files merged, 0 files removed, 0 files unresolved [langtools] requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 2973 changes to 2973 files 2973 files updated, 0 files merged, 0 files removed, 0 files unresolved real 1m0.661s user 0m40.443s sys 0m11.769s %
That’s 6.9 million lines of code in 56,230 files, taking up 485MB.
Whooosh!
For reference, this operation takes upwards of half an hour—on a good day—with the old Sun-proprietary TeamWare SCM. Sun engineers tend to find this a pretty compelling argument for making the switch, despite the hassle of learning a new tool.
These repositories are experimental for now—things will change further as we work to finalize the details of the Mercurial migration and do some dry-run integrations over the next week or so. We’ll reinitialize these repositories when we’re finished, at which point any clones will become unrelated and should be discarded.