Updating branch refs/heads/master to c99304a2905cebfda3da74774b7e55b0d650102e (commit) from 1a3455349145bd8a8564a517c83a8402caf938b1 (commit)
commit c99304a2905cebfda3da74774b7e55b0d650102e Author: Jannis Pohlmann <jan...@xfce.org> Date: Tue Sep 29 13:54:43 2009 +0200 Prepare buildbot notifications in post-receive, send in post-update. The post-receive hook now writes its three parameters into /var/spool/git-buildbot-updates and the post-update hook later reads these lines and passes them to the buildbot update script one by one. To avoid conflicts or corrupted files, we're using flock here. The post-receive hook obtains an exclusive lock while the post-update hook only needs a shared lock. hooks/post-receive-01-buildbot | 17 +++++++++++++++-- hooks/post-update-02-buildbot | 24 ++++++++++++++++++++++++ post-receive | 5 +---- post-update | 11 +++++++++++ 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/hooks/post-receive-01-buildbot b/hooks/post-receive-01-buildbot index a63e550..9babcda 100755 --- a/hooks/post-receive-01-buildbot +++ b/hooks/post-receive-01-buildbot @@ -1,10 +1,23 @@ #!/bin/sh +QUEUE_FILE=/var/spool/git-buildbot-updates +LOCK_FILE=/var/spool/.git-buildbot-updates-lock + if echo $0 | grep -q '^/'; then mydir=`dirname $0` else mydir=`pwd`/`dirname $0` fi -# Do nothing for now until this is tested. -echo "$1 $2 $3" | $mydir/git_buildbot.py > /dev/null +( + # Obtain an exclusive lock for writing to the queue file + flock --exclusive --timeout 10 200 + + # Append the post-receive information to the queue file + echo "$1 $2 $3" >> $QUEUE_FILE + + # Make sure to unlock the file when the command is aborted + trap 'flock --unlock 200' INT TERM EXIT +) 200>$LOCK_FILE + +# echo "$1 $2 $3" | $mydir/git_buildbot.py > /dev/null diff --git a/hooks/post-update-02-buildbot b/hooks/post-update-02-buildbot new file mode 100755 index 0000000..2cba543 --- /dev/null +++ b/hooks/post-update-02-buildbot @@ -0,0 +1,24 @@ +#!/bin/sh + +QUEUE_FILE=/var/spool/git-buildbot-updates +LOCK_FILE=/var/spool/.git-buildbot-updates-lock + +if echo $0 | grep -q '^/'; then + mydir=`dirname $0` +else + mydir=`pwd`/`dirname $0` +fi + +( + # Obtain a shared lock for reading from the queue file + flock --shared --timeout 10 200 + + # Read the post-receive information from the file step by + # step and let the buildbot know about it + cat $QUEUE_FILE | while read P1 P2 P3; do + echo "$P1 $P2 $P3" | $mydir/git_buildbot.py + done + + # Make sure to unlock the file when the command is aborted + trap 'flock --unlock 200' INT TERM EXIT +) 200>$LOCK_FILE diff --git a/post-receive b/post-receive index cb15993..06041a3 100755 --- a/post-receive +++ b/post-receive @@ -2,8 +2,6 @@ XFCE_GIT_HOOK_DIR="/usr/local/share/xfce-git-hooks" -XFCE_GIT_HOOK_DIR="/usr/local/share/xfce-git-hooks" - if [ -z "$GIT_DIR" ]; then echo "GIT_DIR is unset!" >&2 exit 1 @@ -15,6 +13,5 @@ export REPO="`basename $parent`/`basename $path`" unset parent path while read oldrev newrev refname; do - $XFCE_GIT_HOOK_DIR/hooks/post-receive-01-buildbot \ - "$oldrev" "$newrev" "$refname" + $XFCE_GIT_HOOK_DIR/hooks/post-receive-01-buildbot "$oldrev" "$newrev" "$refname" done diff --git a/post-update b/post-update index daaf191..92a20ed 100755 --- a/post-update +++ b/post-update @@ -2,4 +2,15 @@ XFCE_GIT_HOOK_DIR="/usr/local/share/xfce-git-hooks" +if [ -z "$GIT_DIR" ]; then + echo "GIT_DIR is unset!" >&2 + exit 1 +fi + +[[ "$GIT_DIR" = "." ]] && path="`pwd`" || path="$GIT_DIR" +parent="`dirname $path`" +export REPO="`basename $parent`/`basename $path`" +unset parent path + $XFCE_GIT_HOOK_DIR/hooks/post-update-01-server-info +$XFCE_GIT_HOOK_DIR/hooks/post-update-02-buildbot _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits