Mercurial rocks!
2007/11/01 09:09:27 -07:00

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.