44 lines
1.6 KiB
Bash
44 lines
1.6 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Count number of different contributors and number of commits for a given year or month
|
|
# Can be used for statistics (for example to generate the infography of the year)
|
|
#
|
|
|
|
PERIOD=$1
|
|
STARTYEAR=$2
|
|
ENDYEAR=$3
|
|
|
|
DEBUG=${DEBUG:=0} # Example: run script with DEBUG=1 script arguments
|
|
|
|
echo "***** github_authors_and_commits_bydate.sh *****"
|
|
|
|
if [ "$PERIOD" != "byyear" ] && [ "$PERIOD" != "bymonth" ] && [ "$PERIOD" != "byday" ]; then
|
|
echo "Usage: $0 (byyear|bymonth|byday) YEARSTART [YEAREND]"
|
|
exit 1
|
|
fi
|
|
|
|
# Default is byyear
|
|
DATEFORMAT="%Y"
|
|
if [ "$PERIOD" = "bymonth" ]; then
|
|
DATEFORMAT="%Y%m"
|
|
elif [ "$PERIOD" = "byday" ]; then
|
|
DATEFORMAT="%Y%m%d"
|
|
fi
|
|
|
|
FROM=${STARTYEAR}-01-01
|
|
TO=${STARTYEAR}-12-31
|
|
if [ "${ENDYEAR}" != "" ]; then
|
|
TO=${ENDYEAR}-12-31
|
|
else
|
|
ENDYEAR=9999
|
|
fi
|
|
|
|
echo "--- Number of different contributors for the period $FROM $TO"
|
|
[ "$DEBUG" -ne 0 ] && echo "git log --use-mailmap --since '$FROM' --before '$TO' | iconv -f UTF-8 -t ASCII//TRANSLIT | grep ^Author | awk -F'<' '{ print $1 }' | sort -u -f -i -b | wc -l" >&2
|
|
git log --since "$FROM" --before "$TO" | iconv -c -f UTF-8 -t ASCII//TRANSLIT | grep '^Author' | awk -F"<" '{ print $1 }' | sort -u -f -i -b | wc -l
|
|
|
|
|
|
echo "--- Number of commits $1"
|
|
[ "$DEBUG" -ne 0 ] && echo "git log --use-mailmap --pretty='format:%cd' --date=format:'$DATEFORMAT' | iconv -f UTF-8 -t ASCII//TRANSLIT | sort | uniq -c | awk '{ if (\$2 >= '$1') { print \"Year: \"\$2\", commits: \"\$1 } }'" >&2
|
|
git log --pretty='format:%cd' --date=format:"$DATEFORMAT" | iconv -f UTF-8 -t ASCII//TRANSLIT | sort | uniq -c | awk '{ if ($2 >= '"${STARTYEAR}"' && $2 <='"${ENDYEAR}"') { print "Year: "$2", commits: "$1 } }'
|