| #!/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)" |