To start the commit bot, do something like this: sudo -u apache perl fifobot.pl /tmp/svnbot TheRoom svnbot pA55w0rD jabberserver & The above assumes that Subversion is being served by Apache. The FIFO used for communication between Subversion and the bot script must be owned by the user Apache runs as on your system (often 'apache', 'www', 'www-data' or 'webservd' - substitute the correct user & group names above). (Don't forget to put the above command in your server's startup scripts, if desired.) Put (hard or sym-)links to one of the provided post-commit scripts into the 'hooks' directory of each Subversion repository. If you already use a hook script, add a line to it that invokes the post-commit script here with the hook's two parameters. Troubleshooting --------------- This script requires package Net::Jabber: # cpan install Net::Jabber If you can't connect to the Jabber server, try uncommenting the $con->{DEBUG}->Init() call around line 29 and increasing the debug level. Upgrading IO::Socket::SSL may help connection problems. For example, replacing version 0.97 with version 1.13 solved an issue of connection timeouts on my Gentoo Linux system. Don't forget to add 'tls=>1' to the $con->Connect() call (around line 50), if your server requires TLS, or you want an encrypted connection anyway. On OS X 10.4.11, I had to # cpan install Authen::SASL before installing Net::Jabber would succeed. Jabber setup ------------ All your bots may share a single Jabber user account. Each script has its own fifo and a distinct 'resource' name, formed from script name and pid, so they can safely log in at the same time. This means you might have one script started like this: ./fifobot.pl /tmp/svnbot development botuser B0TP4SS jabber.server.com SvnBot & ^ ^ ^ ^ ^ ^ ^ script path fifo path room account password jabber svr nickname and another like this, running together: ./xmlbot.pl /tmp/xmlbot development botuser B0TP4SS jabber.server.com XmlBot & The nicknames distinguish the roles, and allow the single user to have multiple presences in a room. The first script's fifo is written to by post-commit hooks, in order to make commit announcements. The second script could be used to post raw XML to a Jabber session, for a variety of effects including sending room invitations, changing room subjects, etc. For instance, combined with the enclosed shell scripts 'invite.sh' and 'subject.sh' you can automate reminders or group meeting sessions, using cron (or at). E.g., the following crontab entry invites four users to a meeting every Monday at 10am: 0 10 * * 1 /opt/scripts/jabberbots/invite.sh jabber.yourco.com \ devroom "Please join room for meeting" \ peter james katia simone >/tmp/xmlbot