Thanks to Mike McGrath and a host of other Fedora
Infrastructure people, the new Fedora Hosted server has
better support for Bazaar Repositories than the old one!
Under the old setup we had sftp for authenticated checkout
and http for anonymous checkout. In the new scheme we have
smart servers replacing both of those.
Here's a bit of preliminary timing to show you the
difference. Note that these times have several inaccuracies
and should only be used as an extremely general indication
of speed. A few caveats that I know of:
- These times don't test push, merge, and pull speed,
which are the networked operations that you'll be using most
frequently. They only show the inital branch operation
(which, however, is the first impression that most people
get of an SCM's speed.)
- rsync doesn't understand the bzr repository structure so
I have to download the entire repository with rsync instead
of just the branch I'm interested in. In this case, the
difference is 4876K for rsync vs 4556K for the bzr protocol.
- Although I have a bazaar repository setup on the server,
I don't have one setup on the client. In normal operation,
I'd already have most of the data checked out in a
repository in a different branch so a new branch would have
to transfer a lot less data.
- This test is performed with bzr's dirstate-tags branch
format. The latest bzr has a new "pack" format that is
supposed to be faster. We currently have 1.0rc3 on the
server and I'm running 0.92 on the client. I'll likely be
experimenting with the new format after I get 1.0 installed
on both sides.
Baseline rsync This runs rsync and then does a
lightweight
checkout in the directory (leaving us with a branch and
working tree just like a bzr branch operation.)
rsync -a rsync://bzr.fedorahosted.org/bzr/packagedb/ .
cd fedora-packagedb-devel
bzr checkout --lightweight
real 0m16.548s
bzr over http This is equivalent to what we have had to
use on the old server:
bzr branch
http://bzr.fedorahosted.org/bzr/packagedb/fedora-packagedb-devel
Branched 258 revision(s).
real 1m2.844s
Ouch!
A fresh branch using the smart server
bzr branch
bzr://bzr.fedorahosted.org/bzr/packagedb/fedora-packagedb-devel
Copying repository content as tarball...
Branched 258 revision(s).
real 0m23.192s
Much better! This is only 7 seconds slower than using rsync.
bzr+ssh smart server for rw access:
bzr branch
bzr+ssh://bzr.fedorahosted.org/bzr/packagedb/fedora-packagedb-devel
Copying repository content as tarball...
Branched 258 revision(s).
real 0m25.501s
The ssh protocol adds a few seconds to the total time but
it's also quite speedy.
One interesting point is that the smart server times are
much better than the ones I posted in October. This could be because we're dealing with a
different server on a different network or it could be that
we've gone from using bazaar-0.18 to bazaar-1.0rc3 on the
server. I'll have to do more timings after we get settled
into the new machine to tell more.