69 lines
1.5 KiB
Bash
Executable File
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
|