Skip to content

Instantly share code, notes, and snippets.

@irazasyed
Last active July 15, 2017 13:28
Show Gist options
  • Save irazasyed/2f024550f640b61fa908 to your computer and use it in GitHub Desktop.
Save irazasyed/2f024550f640b61fa908 to your computer and use it in GitHub Desktop.
Shell: Generate Git-Changelog
#!/bin/sh
CHANGELOG_FILE=CHANGELOG.md
FORMAT=" * [%h](../../commit/%h) - %s"
if test "$CHANGELOG_FILE" != ""; then
rm -rf $CHANGELOG_FILE
touch $CHANGELOG_FILE
fi
echo "\nCHANGELOG\n=========\n\n" >> $CHANGELOG_FILE
git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags |gtac |grep -v '^$' | while read TAG ; do
TAG_DATE=$(git log -1 --pretty=tformat:%cd --date=short $TAG)
if [ $NEXT ];then
TAG_DATE=$(git log -1 --pretty=tformat:%cd --date=short $NEXT)
echo "\n\n#### $NEXT / $TAG_DATE" >> $CHANGELOG_FILE
else
echo "#### [Current] / $TAG_DATE" >> $CHANGELOG_FILE
fi
GIT_PAGER=cat git log --pretty=format:"$FORMAT" $TAG..$NEXT >> $CHANGELOG_FILE
NEXT=$TAG
done
FIRST=$(git tag -l | head -1)
TAG_DATE=$(git log -1 --pretty=tformat:%cd --date=short $FIRST)
echo "\n\n#### $FIRST / $TAG_DATE" >> $CHANGELOG_FILE
GIT_PAGER=cat git log --pretty=format:"$FORMAT" $FIRST >> $CHANGELOG_FILE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment