Get tests passing again.
[git-central.git] / server / post-receive-trac
old mode 100644 (file)
new mode 100755 (executable)
index fc8d0e1..b98445e
@@ -1,16 +1,33 @@
-#!/bin/sh
+#!/bin/bash
 
-export LD_LIBRARY_PATH=/home/BIPFS/shaberman/local/lib
-TRAC_ENV=/srv/trac/cbas
+. $(dirname $0)/functions
 
 while read oldrev newrev refname ; do
-       if expr "$oldrev" : '0*$' >/dev/null
-       then
-               git rev-parse --not --branches | grep -v $(git rev-parse $refname) | git rev-list --stdin $newrev
-       else
-               git rev-parse --not --branches | grep -v $(git rev-parse $refname) | git rev-list --stdin $oldrev..$newrev
-       fi | while read com ; do
-               /home/BIPFS/shaberman/local/bin/python /srv/git/hooks/trac-post-commit-hook.py -p "$TRAC_ENV" -r "$com"
+       case "$refname" in
+               refs/tags/*)
+                       short_refname=${refname##refs/tags/}
+                       ;;
+               refs/heads/*)
+                       short_refname=${refname##refs/heads/}
+                       ;;
+               *)
+                       echo >&2 "*** Unknown type of update to $refname"
+                       exit 1
+                       ;;
+       esac
+
+       set_new_commits
+       set_rev_types
+
+       echo "$new_commits" | git rev-list --reverse --stdin | while read commit ; do
+               set_describe "$commit"
+               set_describe_tags "$commit"
+               author="$(git rev-list -n 1 $commit --pretty=format:'%cn <%ce>' | grep -v $commit)"
+               message="$(git rev-list -n 1 $commit --pretty=format:'%s%n%b' | grep -v $commit)"
+               "$PYTHON" "$(dirname $0)/post-receive-trac.py" "$TRAC_ENV" "$short_refname" "$describe" "$describe_tags" "$commit" "$author" "$message"
+               # Trac will crap out if we submit ticket refs too quickly
+               # http://trac.edgewall.org/ticket/6466
+               sleep 1
        done
 done