Finding old branches in Git
I had to find out which branches in a Git repository was old and output it to a file. An old branch is defined to have no commits the last four months. Here is the bash script I ended up with.
#!/bin/bash
resolveOldBranches(){
branchfile="oldbranches.txt"
declare -i branchiteration=0
branchcount=$(git branch -a | wc -l)
if [ ! -e $branchfile ] ; then
touch $branchfile
fi
#empty the oldbranch file
: > $branchfile
for k in $(git branch -a | sed /\*/d); do
if [ -z "$(git log -1 --since='4 months ago' -s $k)" ]; then
echo $k | cut -d/ -f3 >> $branchfile
fi
branchiteration=$branchiteration+1
percentage= bc <<< "scale=2;($branchiteration/$branchcount)*100"
read -n 1 -t 0.1 input # so read doesn't hang
if [[ $input = "q" ]] || [[ $input = "Q" ]]
then
echo # to get a newline after
echo -e "XXX\n$($percentage)\nAnalyzing $branchiteration of $branchcount $(bc <<< "scale=2;($branchiteration/$branchcount)*100") % done. \n(Exit: Q/q)... \nXXX"
done | whiptail --title "Resolving OpPlan 4 branch ages" --gauge "Analyzing.. (Press Q or q to exit)" 10 60 0
}
resolveOldBranches
cat $branchfile