#! /bin/sh # # release-stats.sh # Copyright (C) 2017 Martine Lenders # # This file is subject to the terms and conditions of the GNU Lesser # General Public License v2.1. See the file LICENSE in the top level # directory for more details. # # This script is intended to help release managers to collect statistics about # a release for https://github.com/RIOT-OS/RIOT/wiki/release-statistics RIOTBASE="$(realpath "$( cd "$(dirname "${0}")" && pwd )/../../..")" OLD="${1}" NEW="${2}" if [ $# -lt 2 ]; then echo "usage: ${0} []" >&2 exit 1 fi if [ $# -gt 2 ]; then RIOTBASE="$(realpath "${3}")" fi FILES=$(git ls-tree --full-tree -r "${NEW}") START=$(git -C "${RIOTBASE}" log -n 1 --pretty="format:%at" "${OLD}") END=$(git -C "${RIOTBASE}" log -n 1 --pretty="format:%at" "${NEW}") echo " " echo " ${NEW}" echo " $(echo "${FILES}" | wc -l)" echo -n " $(echo "${FILES}" | awk '{ print $3 }' | xargs -I'{}' git cat-file blob '{}'| wc -l) " echo "($(echo "$FILES" | grep -i "[chs]$" | awk '{ print $3 }' | xargs -I'{}' git cat-file blob '{}' | wc -l))" echo " $(( (END - START) / (60 * 60 * 24) )) days" echo " $(git log --no-merges --pretty=oneline "${OLD}".."${NEW}" | wc -l)" echo " $(git diff --shortstat --no-renames "${OLD}".."${NEW}" | sed 's#^\s\+##')" echo " $(git shortlog --no-merges -n -s "${OLD}".."${NEW}" | head -n 5 | sed 's#\s\+# #g;s#^ ##;s#$#
#;2,$s#^# #')" echo " "