HTTP is currently listed as a read-only/unsupported method for doing pushes, is that due to inherent problems with HTTP or just because it hasn't been written yet?
I've built a working prototype of an HTTP push implementation using DAV. It locks the remote branch file during the push and PUTs to temp files to insure nobody else reads objects while they're being pushed. It does not validate remote objects - if they exist on the remote end as loose objects or in a pack, local copies won't be pushed. It supports sparse object directories, and verifies that the remote branch is an ancestor of the local branch before doing anything.
I'm curious to know whether it would be useful to proceed further, and to know what I haven't thought about yet...
-- For a successful technology, reality must take precedence over public relations, for nature cannot be fooled.