#!/bin/bash # Specify a directory with all Git repositories REPODIR=~/Git # Regex or fixed name (brackets need to be escaped with a backslash) REPOUSER="\(structix\|Janek\)" # Specify the start date, where the statistics should be gathered STARTDATE="01 Jan 2018" # -------------------- # Switch into the REPODIR pushd $REPODIR # total commits commitcounter=0 # total diff stats totalfiles=0 totalinsertions=0 totaldeletions=0 # Iterate over all subdirectories for dir in $REPODIR/*/ do dir=${dir%*/} echo ${dir##*/} # enter directory cd ${dir##*/} # --- RUN COMMANDS # show amount of commits of all users committemp=$(git rev-list --count --all --author=$REPOUSER --since="$STARTDATE") # Add to the total commit counter commitcounter=$((commitcounter + committemp)) # calculate total changes between given date and HEAD extractdiff=$(git diff @{"$STARTDATE"} HEAD --shortstat) 2>/dev/null # set the separator to , IFS=',' array=( $extractdiff ) totalfiles=$(( ${array[0]//[!0-9]} + totalfiles)) totalinsertions=$(( ${array[1]//[!0-9]} + totalinsertions)) totaldeletions=$(( ${array[2]//[!0-9]} + totaldeletions)) # ------------------ # Output the commit counter of the current iteration echo $committemp # go back cd .. done echo "Total commits since $STARTDATE: $commitcounter" echo "Total files changed: $totalfiles" echo "Total insertions: $totalinsertions" echo "Total deletions: $totaldeletions" # Switch back to the original directory state popd