Skip to content

Commit

Permalink
Make the ciabot scripts completely self-configuring in the normal case.
Browse files Browse the repository at this point in the history
Signed-off-by: Eric S. Raymond <esr@thyrsus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
eric-s-raymond authored and gitster committed Aug 24, 2012
1 parent 6484070 commit df1effa
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 37 deletions.
26 changes: 21 additions & 5 deletions contrib/ciabot/INSTALL
Expand Up @@ -8,22 +8,38 @@ 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 (required)
ciabot.project = name of the project
ciabot.repo = name of the project repo for gitweb/cgit purposes
ciabot.xmlrpc = if true (default), ship notifications via XML-RPC
ciabot.xmlrpc = if true, ship notifications via XML-RPC
ciabot.revformat = format in which the revision is shown

The ciabot.repo value defaults to ciabot.project lowercased.

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
The default is 'describe'.

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.

Expand Down
11 changes: 0 additions & 11 deletions contrib/ciabot/README
Expand Up @@ -8,15 +8,4 @@ You probably want the Python version; it's faster, more capable, and
better documented. The shell version is maintained only as a fallback
for use on hosting sites that don't permit Python hook scripts.

To 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, using the -p option to pass in your project name.

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

See the file INSTALL for installation instructions.
32 changes: 21 additions & 11 deletions contrib/ciabot/ciabot.py
Expand Up @@ -10,11 +10,9 @@
# usage: ciabot.py [-V] [-n] [-p projectname] [refname [commits...]]
#
# This script is meant to be run either in a post-commit hook or in an
# update hook. If there's nothing unusual about your hosting setup,
# you can specify the project name and repo with config variables and
# avoid having to modify this script. Try it with -n to see the
# notification mail dumped to stdout and verify that it looks
# sane. With -V it dumps its version and exits.
# update hook. Try it with -n to see the notification mail dumped to
# stdout and verify that it looks sane. With -V it dumps its version
# and exits.
#
# In post-commit, run it without arguments. It will query for
# current HEAD and the latest commit ID to get the information it
Expand All @@ -27,12 +25,17 @@
# /path/to/ciabot.py ${refname} $(git rev-list ${oldhead}..${newhead} | tac)
#
# Configuration variables affecting this script:
# ciabot.project = name of the project (required)
#
# ciabot.project = name of the project
# ciabot.repo = name of the project repo for gitweb/cgit purposes
# ciabot.xmlrpc = if true (default), ship notifications via XML-RPC
# ciabot.revformat = format in which the revision is shown
#
# The ciabot.repo value defaults to ciabot.project lowercased.
# ciabot.project defaults to the directory name of the repository toplevel.
# ciabot.repo defaults to ciabot.project lowercased.
#
# This means that in the normal case you need not do any configuration at all,
# but setting the project name will speed it up slightly.
#
# The revformat variable may have the following values
# raw -> full hex ID of commit
Expand Down Expand Up @@ -102,7 +105,7 @@
# Identify the generator script.
# Should only change when the script itself gets a new home and maintainer.
generator = "http://www.catb.org/~esr/ciabot.py"
version = "3.5"
version = "3.6"

def do(command):
return commands.getstatusoutput(command)[1]
Expand Down Expand Up @@ -192,10 +195,17 @@ def report(refname, merged, xmlrpc=True):
print "ciabot.py: version", version
sys.exit(0)

# Cough and die if user has not specified a project
# The project variable defaults to the name of the repository toplevel.
if not project:
sys.stderr.write("ciabot.py: no project specified, bailing out.\n")
sys.exit(1)
here = os.getcwd()
while True:
if os.path.exists(os.path.join(here, ".git")):
project = os.path.basename(here)
break
elif here == '/':
sys.stderr.write("ciabot.py: no .git below root!\n")
sys.exit(1)
here = os.path.dirname(here)

if not repo:
repo = project.lower()
Expand Down
40 changes: 30 additions & 10 deletions contrib/ciabot/ciabot.sh
Expand Up @@ -21,11 +21,9 @@
# usage: ciabot.sh [-V] [-n] [-p projectname] [refname commit]
#
# This script is meant to be run either in a post-commit hook or in an
# update hook. If there's nothing unusual about your hosting setup,
# you can specify the project name and repo with config variables and
# avoid having to modify this script. Try it with -n to see the
# notification mail dumped to stdout and verify that it looks
# sane. With -V it dumps its version and exits.
# update hook. Try it with -n to see the notification mail dumped to
# stdout and verify that it looks sane. With -V it dumps its version
# and exits.
#
# In post-commit, run it without arguments. It will query for
# current HEAD and the latest commit ID to get the information it
Expand All @@ -44,11 +42,16 @@
# most recent to least - better to ship notifactions from oldest to newest.
#
# Configuration variables affecting this script:
# ciabot.project = name of the project (makes -p option unnecessary)
#
# ciabot.project = name of the project
# ciabot.repo = name of the project repo for gitweb/cgit purposes
# ciabot.revformat = format in which the revision is shown
#
# The ciabot.repo defaults to ciabot.project lowercased.
# ciabot.project defaults to the directory name of the repository toplevel.
# ciabot.repo defaults to ciabot.project lowercased.
#
# This means that in the normal case you need not do any configuration at all,
# but setting the project name will speed it up slightly.
#
# The revformat variable may have the following values
# raw -> full hex ID of commit
Expand All @@ -64,10 +67,27 @@
# shpped from an update in their actual order.)
#

# The project as known to CIA. You can also hardwire this or set it with a
# -p option.
# The project as known to CIA. You can set this with a -p option,
# or let it default to the directory name of the repo toplevel.
project=$(git config --get ciabot.project)

if [ -z $project ]
then
here=`pwd`;
while :; do
if [ -d $here/.git ]
then
project=`basename $here`
break
elif [ $here = '/' ]
then
echo "ciabot.sh: no .git below root!"
exit 1
fi
here=`dirname $here`
done
fi

# Name of the repo for gitweb/cgit purposes
repo=$(git config --get ciabot.repo)
[ -z $repo] && repo=$(echo "${project}" | tr '[A-Z]' '[a-z]')
Expand Down Expand Up @@ -100,7 +120,7 @@ urlprefix="http://${host}/cgi-bin/cgit.cgi/${repo}/commit/?id="
# Identify the script. The 'generator' variable should change only
# when the script itself gets a new home and maintainer.
generator="http://www.catb.org/~esr/ciabot/ciabot.sh"
version=3.4
version=3.5

# Addresses for the e-mail
from="CIABOT-NOREPLY@${hostname}"
Expand Down

0 comments on commit df1effa

Please sign in to comment.