#!/bin/bash set -e repo=`git remote show origin | grep Fetch | cut -d' ' -f5` branch="master" if [ "$#" -eq 1 ] ; then commit=`git log | head -1 | cut -d' ' -f2` path=$1 elif [ "$#" -eq 2 ] ; then commit=$1 path=$2 else echo "bad number of parameters" > /dev/stderr echo > /dev/stderr echo " try with: [commit] path" > /dev/stderr exit fi blames=`git blame --root $path | cut -d' ' -f1` declare -a blame i=0 for shortBlame in $blames ; do blame[$i]=`git show $shortBlame | head -1 | cut -d' ' -f2` i=`expr $i + 1` done # some remotes have the .git, other don't, # repoDot makes sure all have repoDot="${repo%.git}.git" echo -e "\t{\"${repoDot}\", \"${branch}\", \"${commit}\", \"${path}\", concat(&[]string{}," prev="" count=1 for i in ${blame[@]} ; do if [ "${prev}" == "" ] ; then prev=$i elif [ "$prev" == "$i" ] ; then count=`expr $count + 1` else echo -e "\t\trepeat(\"${prev}\", $count)," count=1 prev=$i fi done echo -e "\t\trepeat(\"${prev}\", $count)," echo -e "\t)},"