Files
gitistics/gitistics.sh
2019-01-05 01:17:12 +01:00

69 lines
1.5 KiB
Bash
Executable File

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