-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathfetch_prs_between.sh
executable file
·43 lines (33 loc) · 1.45 KB
/
fetch_prs_between.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/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)"