= Installation instructions =

Two scripts are included.  The Python one (ciabot.py) is faster and
more capable; the shell one (ciabot.sh) is a fallback in case Python
gives your git hosting site indigestion. (I know of no such sites.)

It is no longer necessary to modify the script in order to put it
in place; in fact, this is now discouraged. It is entirely
configurable with the following git config variables:

ciabot.project = name of the project
ciabot.repo = name of the project repo for gitweb/cgit purposes
ciabot.xmlrpc  = if true, ship notifications via XML-RPC
ciabot.revformat = format in which the revision is shown

The revformat variable may have the following values
raw -> full hex ID of commit
short -> first 12 chars of hex ID
describe -> describe relative to last tag, falling back to short

ciabot.project defaults to the directory name of the repository toplevel.
ciabot.repo defaults to ciabot.project lowercased.
ciabot.xmlrpc defaults to True
ciabot.revformat defaults to 'describe'.

This means that in the normal case you need not do any configuration at all,
however setting ciabot.project will allow the hook to run slightly faster.

Once you've set these variables, try your script with -n to see the
notification message dumped to stdout and verify that it looks sane.

To live-test these scripts, your project needs to have been registered with
the CIA site.  Here are the steps:

1. Open an IRC window on irc://freenode/commits or your registered
   project IRC channel.

2. Run ciabot.py and/or ciabot.sh from any directory under git
   control.

You should see a notification on the channel for your most recent commit.

After verifying correct function, install one of these scripts either
in a post-commit hook or in an update hook.

In post-commit, run it without arguments. It will query for
current HEAD and the latest commit ID to get the information it
needs.

In update, call it with a refname followed by a list of commits:
You want to reverse the order git rev-list emits because it lists
from most recent to oldest.

/path/to/ciabot.py ${refname} $(git rev-list ${oldhead}..${newhead} | tac)
