You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#! /bin/sh
|
|
|
|
|
|
|
|
VERBOSE=false
|
|
|
|
|
|
|
|
if [ x"$1" = x"--verbose" ]; then
|
|
|
|
VERBOSE=true
|
|
|
|
shift
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$#" != 1 ]; then
|
|
|
|
echo "Usage: $0 <last-tag>" >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
PREV_TAG="$1"
|
|
|
|
|
|
|
|
git log "$PREV_TAG".. --format="%an|%ae" | sort | uniq -c | sort -rn > /tmp/authors.$$
|
|
|
|
sed -n 's/.*[Nn]amed by //p' < CHANGELOG.md > /tmp/namers.$$
|
|
|
|
git log "$PREV_TAG" --format="%an|%ae" | sort -u > /tmp/prev-authors.$$
|
|
|
|
|
|
|
|
NAMER=""
|
|
|
|
BACKUP_NAMER=""
|
|
|
|
TOTAL=0
|
|
|
|
while read LINE; do
|
|
|
|
COUNT=${LINE%% [^ 0123456789]*}
|
|
|
|
TOTAL=$(($TOTAL + $COUNT))
|
|
|
|
LINE=${LINE#*[1234567890] }
|
|
|
|
NAME=${LINE%%|*}
|
|
|
|
EMAIL=${LINE#*|}
|
|
|
|
NOTES=""
|
|
|
|
if [ $(grep -ci -- "$NAME\|$EMAIL" /tmp/prev-authors.$$) = 0 ]; then
|
|
|
|
NOTES="$NOTES""NEW COMMITTER "
|
|
|
|
fi
|
|
|
|
if ! grep -qi -- "$NAME" /tmp/namers.$$; then
|
|
|
|
if [ -z "$NAMER" ]; then
|
|
|
|
NAMER="$NAME"
|
|
|
|
NOTES="$NOTES""*NEXT NAMER* "
|
|
|
|
elif [ -z "$BACKUP_NAMER" ]; then
|
|
|
|
BACKUP_NAMER="$NAME"
|
|
|
|
NOTES="$NOTES""*BACKUP NAMER* "
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ -n "$NOTES" ] || $VERBOSE; then
|
|
|
|
echo "$COUNT $NAME $EMAIL $NOTES"
|
|
|
|
fi
|
|
|
|
done < /tmp/authors.$$
|
|
|
|
|
|
|
|
DAYS=$(( ( $(date +%s) - $(git log "$PREV_TAG" --format=%at | head -n1) ) / (3600*24) ))
|
|
|
|
|
|
|
|
echo "$TOTAL commits in $DAYS days"
|
|
|
|
rm /tmp/authors.$$ /tmp/namers.$$ /tmp/prev-authors.$$
|