« Back to Index

Git: Generate change log between two tags

View original Gist on GitHub

Tags: #changelog #git

changelog.bash

#!/bin/bash

tags=$(git for-each-ref --sort=-creatordate --format '%(refname) %(creatordate)' refs/tags | grep -Eo 'client/rust@v?[^ ]+')
latest_tag=$(echo "$tags" | head -n 1)
second_tag=$(echo "$tags" | head -n 2 | tail -1)
release_version=$(echo "$latest_tag" | cut -d @ -f 2)

# echo "all tags for this language: $tags"
# echo "latest tag: $latest_tag"
# echo "second tag: $second_tag"

changes=$(git log --pretty="- %s" "$latest_tag"..."$second_tag" --no-merges)

# echo "$changes"

# NOTE: xargs trims whitespace
printf "# \`v$release_version\`\n\n## CHANGES (commits: $(echo "$changes" | wc -l | xargs))\n\n$changes\n" > release_notes.md