Built out the XMPP push notifier; around 200 lines of code.
Haven't tested it yet, but it just might work. It's in the xmpp
branch
for now.
I decided to send the UUID of the repo that was pushed to, otherwise peers would have to speculatively pull from every repo. A wrinkle in this is that not all git repos have a git-annex UUID. So it might notify that a push was sent to an unidentified repo, and then peers need to pull from every such repo. In the common case, there will only be one or a few such repos, at someplace like at github that doesn't support git-annex. I could send the URL, but there's no guarantee different clients have the same URLs for a git remote, and also sending the URL leaks rather more data than does a random UUID.
Had a bit of a scare where it looked like I couldn't use the haskell
network-protocol-xmpp
package together with the mtl
package that
git-annex already depends on. With help from #haskell I found the way
to get them co-existing, by using the PackageImports extension. Whew!
Need to add configuration of the XMPP server to use in the webapp, and
perhaps also a way to create .git/annex/creds/notify-xmpp
from the
command line.