[Ozzie Chan] > I've recently been contemplating implementing an RA layer using the > bittorrent protocol in order to speed up large repository checkouts.
I don't think it would fit the RA layer very well, honestly. I think what you'd do instead is seed a torrent of a full checkout, or perhaps of a svn dump file. Or you could come up with a protocol that is somewhat, but not entirely, like bittorrent: each client seeks dumpfiles of all the revisions in the repository. They exchange these much like normal bittorrent payloads, except that there's probably no way to come up with the checksums in advance, so the clients would all have to trust each other. The repository would serve as the initial "seed", and each client would use 'svnrdump' (a tool to generate a dumpfile over the RA layer) to retrieve new revisions from the repository that are not already in the BT network. I note that this gives you a copy of the repository, which is a superset of a checkout and may be many times larger. Can be useful, too, to set up a local write-through proxy via mod_dav_svn and keep it up to date with svnsync. Refer also to Luke Leighton's recent git->BT gateway proof of concept: http://lists.debian.org/debian-devel/2010/09/msg00009.html and following http://gitorious.org/python-libbittorrent/pybtlib I note that git is probably better suited to the bittorrent gateway concept than svn is, since it is changeset-oriented, and each changeset contains and is uniquely identified by a cryptographic hash. -- Peter Samuelson | org-tld!p12n!peter | http://p12n.org/