| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/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
|