Laying the groundwork for git push over XMPP. BTW, the motivation for doing this now is that if the assistant can push git data peer-to-peer, users who are entirely using the cloud don't need to set up a git repo in the cloud somewhere. Instead, a single special remote in the cloud will be all they need. So this is a keystone in the assistant's cloud support. I'm building the following pipeline: git push <--> git-annex xmppgit <--> xmppPush <-------> xmpp | git receive-pack <--> xmppReceivePack <---------------> xmpp A tricky part of this is `git-annex xmppgit`, which is run by `git push` rather than the usual `ssh`. Rather than speak XMPP itself, that feeds the data through the assistant daemon, using some special FDs that are set up by the assistant when it runs `git push`, and communicated via environment variables. I hoped to set up a pipe and not need it to do any work on its own, but short of using the linux-specific `splice(2)`, that doesn't seem possible. It also will receive the exit status of `git receive-pack` and propigate it to `git push`. Also built the IO sides of `xmppPush` and `xmppReceivePack` although these are not tested. The XMPP sides of them come next. ---- Stuffing lots of git-annex branded USB keys into envelopes tonight, while watching the election coverage.