#!/bin/bash NEW=() FIXES=() MISC=() echo "@ Fetching remote tags ..." git fetch --tags >/dev/null printf "\n\n" CURTAG=$(git describe --tags --abbrev=0) OUTPUT=$(git log $CURTAG..HEAD --oneline) IFS=$'\n' LINES=($OUTPUT) for LINE in "${LINES[@]}"; do LINE=$(echo "$LINE" | sed -E "s/^[[:xdigit:]]+\s+//") if [[ $LINE == *"new:"* ]]; then LINE=$(echo "$LINE" | sed -E "s/^new: //") NEW+=("$LINE") elif [[ $LINE == *"fix:"* ]]; then LINE=$(echo "$LINE" | sed -E "s/^fix: //") FIXES+=("$LINE") elif [[ $LINE != *"i did not bother commenting"* ]] && [[ $LINE != *"Merge "* ]]; then echo " MISC LINE =$LINE" LINE=$(echo "$LINE" | sed -E "s/^[a-z]+: //") MISC+=("$LINE") fi done if [ -n "$NEW" ]; then echo echo "**New Features**" echo for l in "${NEW[@]}"; do echo "* $l" done fi if [ -n "$FIXES" ]; then echo echo "**Fixes**" echo for l in "${FIXES[@]}"; do echo "* $l" done fi if [ -n "$MISC" ]; then echo echo "**Misc**" echo for l in "${MISC[@]}"; do echo "* $l" done fi echo