XMPP (Jabber) is used by the assistant as a git remote. This is, technically not a git-annex special remote (large files are not transferred over XMPP; only git commits are sent).

Typically XMPP will be set up using the web app, but here's how a manual set up could be accomplished:

  1. xmpp login credentials need to be stored in .git/annex/creds/xmpp. Obviously this file should be mode 600. An example file:

    XMPPCreds {xmppUsername = "joeyhess", xmppPassword = "xxxx", xmppHostname = "xmpp.l.google.com.", xmppPort = 5222, xmppJID = "joeyhess@gmail.com"}

  2. A git remote is created using a special url, of the form xmpp::user@host For the above example, it would be url = xmpp::joeyhess@gmail.com

  3. The uuid of one of the other clients using XMPP should be configured using the annex.uuid setting, the same as is set up for other remotes.

With the above configuration, the assistant will use xmpp remotes much as any other git remote. Since XMPP requires a client that is continually running to see incoming pushes, the XMPP remote cannot be used with git at the command line.

XMPP server support status

Provider Status Type Notes
Gmail Working ? Google apps users will have to configure .git/annex/creds/xmpp manually
Coderollers Working Openfire
jabber.me Working Tigase
xmpp.ru.net Working jabberd2
jabber.org Working Isode M-Link
- Working Prosody No providers tested.
- Working Metronome No providers tested.
- Failing ejabberd Authentication bug: Fixed in debian unstable with version 2.1.10-5
- Failing jabberd14 No further information

List of providers: http://xmpp.net/

See also: xmpp protocol design notes

It would be nice if you could expand the XMPP setup in the assistant to support an "advanced" settings view where a custom server could be defined.

Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.

Yeah, I agree, this would be nice.

For your own domain, you can configure DNS like this: http://support.google.com/a/bin/answer.py?hl=en&answer=34143 to make XMPP find the right server. But for some that's not an option and the "advanced" mode would be useful in that case.

I set up two fresh annexes that can talk via XMPP and no other way. After I fire up the assistants I expect them to sync their metadata, but nothing happens. One log gives me an 'XMPPClient: received: ["Unknown message"]' message every two minutes. The other one doesn't contain the string XMPP at all, not once. So my suspicion is that this particular version of git-annex doesn't support XMPP, which is weird because:

$ git annex version
git-annex version: 4.20130909
build flags: Assistant Pairing Testsuite S3 Inotify XMPP DNS Feeds
local repository version: 3
default repository version: 3
supported repository versions: 3 4
upgrade supported from repository versions: 0 1 2

This is the version output from the other machine:

$ git annex version
git-annex version: 4.20130827
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
local repository version: 3
default repository version: 3
supported repository versions: 3 4
upgrade supported from repository versions: 0 1 2

What am I missing? Are there more build flags for XMPP than the one called XMPP? (Also, no, I can't just copy versions between machines b/c the architectures are different. And yep, the one giving me trouble is ARM.)

Comment by RaspberryPie Tue Sep 17 06:53:59 2013

If you have the XMPP flag in your git-annex build, it will support XMPP. Are you sure you set up the xmpp creds file and the xmpp special remote correctly on the ARM machine? (I assume it has no webapp, so you had to set that up manually..)

Here's how you can do that manually:

  1. Run git-annex on a machine with the webapp, set up XMPP, and copy the .git/annex/creds/xmpp to the machine without the webapp.
  2. On the machine without the webapp, add a git remote that has its "url = xmpp::loginname@xmppserver.com" and its annex-uuid set to the annex.uuid of the repository on the first machine.
  3. Run git-annex assistant on the machine without the webapp.
Comment by http://joeyh.name/ Thu Sep 19 21:07:35 2013
Comments on this page are closed.