mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-02-19 02:27:55 -05:00
94 lines
2.2 KiB
Bash
Executable file
94 lines
2.2 KiB
Bash
Executable file
#!/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 <http://www.gnu.org/licenses/>.
|
|
|
|
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 <nagiosplug-checkins@lists.sourceforge.net>'
|
|
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 <repository> ..."
|
|
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 | 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
|