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 --lightweightreal 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.844sOuch!
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).Much better! This is only 7 seconds slower than using rsync.real 0m23.192s
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).The ssh protocol adds a few seconds to the total time but it's also quite speedy.real 0m25.501s
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.