#!/bin/sh # # Copyright (c) 2009 Nagios Plugins Development Team # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . set -e set -u prefix='/home/git' PATH="$prefix/opt/git/bin:/bin:/usr/bin" export PATH gitnotify="$prefix/libexec/git-notify" recipient='Nagios Plugins Commit List ' maxcommits=100 maxdiffsize=$((300 * 1024)) gitweburl='http://repo.or.cz/w' tempprefix='/dev/shm' fourtyzeros=$(printf '%.40u' 0) myself=${0##*/} checkrefs() { turn=$1 git show-ref | while read object ref do refdir="$tempdir/${ref%/*}" reffile="$tempdir/$ref" if [ $turn -eq 2 -a -f "$reffile" ] \ && grep "^1 $object$" "$reffile" >'/dev/null' then # The ref has not been modified. rm -f "$reffile" else mkdir -p "$refdir" echo "$turn $object" >>"$reffile" fi done } if [ $# -lt 1 ] then echo >&2 "Usage: $myself ..." exit 1 fi tempdir=$(mktemp -d "$tempprefix/$myself.XXXXXX") tempfile=$(mktemp "$tempprefix/$myself.XXXXXX") trap 'rm -rf "$tempdir" "$tempfile"' EXIT for repository in "$@" do cd "$repository" checkrefs 1 if ! git remote update --prune >"$tempfile" 2>&1 then cat >&2 "$tempfile" exit 1 fi git fetch --quiet --tags checkrefs 2 find "$tempdir" -type 'f' -print | sed 's!^\./!!' | while read reffile do ref=${reffile#$tempdir/} old=$(awk '$1 == "1" { print $2; exit }' "$reffile") new=$(awk '$1 == "2" { print $2; exit }' "$reffile") old=${old:-$fourtyzeros} new=${new:-$fourtyzeros} echo "$old" "$new" "$ref" done | $gitnotify \ -m "$recipient" \ -n "$maxcommits" \ -s "$maxdiffsize" \ -u "$gitweburl" cd "$OLDPWD" done