#!/bin/bash # Fetches the merge commits between two git commits and prints the PR URL # together with the full commit message # # If you want to use this to update the Clippy changelog, be sure to manually # exclude the non-user facing changes like 'rustup' PRs, typo fixes, etc. set -e IFS=' ' for pr in $(git log --oneline --merges --first-parent "$1...$2"); do id=$(echo "$pr" | rg -o '#[0-9]{3,5}' | cut -c 2-) commit=$(echo "$pr" | cut -d' ' -f 1) message=$(git --no-pager show --pretty=medium "$commit") if [[ -z "$newest_pr" ]]; then newest_pr="$id" fi oldest_pr="$id" if [[ -n $(echo "$message" | rg "^[\s]{4}changelog: [nN]one\.*$") ]]; then continue fi echo "URL: https://github.com/rust-lang/rust-clippy/pull/$id" echo "Markdown URL: [#$id](https://github.com/rust-lang/rust-clippy/pull/$id)" echo "$message" echo "---------------------------------------------------------" echo done newest_merged_at="$(gh pr view -R rust-lang/rust-clippy --json mergedAt $newest_pr -q .mergedAt)" oldest_merged_at="$(gh pr view -R rust-lang/rust-clippy --json mergedAt $oldest_pr -q .mergedAt)" query="merged:$oldest_merged_at..$newest_merged_at base:master" encoded_query="$(echo $query | sed 's/ /+/g; s/:/%3A/g')" pr_link="https://github.com/rust-lang/rust-clippy/pulls?q=$encoded_query" count="$(gh api -X GET search/issues -f "q=$query repo:rust-lang/rust-clippy" -q .total_count)" echo "[View all $count merged pull requests]($pr_link)"