1 | #!/bin/bash
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | set -o errexit
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | MERGE_RE=Merge\ pull\ request\
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | SQUASH_RE='([^\|]+)\|([^\(]+) \(#([0-9]+)\)'
|
19 |
|
20 | GITHUB_URL=https://github.com
|
21 | PULLS_URL=${GITHUB_URL}/openlayers/openlayers/pull
|
22 |
|
23 | display_usage() {
|
24 | cat <<-EOF
|
25 |
|
26 | Usage: ${1} <revision range>
|
27 |
|
28 | Creates a Markdown-formatted changelog given a revision range.
|
29 |
|
30 | E.g.
|
31 | ${1} v3.0.0.. > changelog/v3.1.0.md
|
32 |
|
33 | See git-log(1) for details on the revision range syntax.
|
34 |
|
35 | EOF
|
36 | }
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | main() {
|
44 | git log --first-parent --format='%aN|%s %b' ${1} |
|
45 | {
|
46 | while read l; do
|
47 | if [[ ${l} =~ ${MERGE_RE} ]] ; then
|
48 | number="${BASH_REMATCH[1]}"
|
49 | author="${BASH_REMATCH[2]}"
|
50 | summary="${BASH_REMATCH[3]}"
|
51 | echo " * [#${number}](${PULLS_URL}/${number}) - ${summary} ([@${author}](${GITHUB_URL}/${author}))"
|
52 | elif [[ ${l} =~ ${SQUASH_RE} ]] ; then
|
53 | number="${BASH_REMATCH[3]}"
|
54 | author="${BASH_REMATCH[1]}"
|
55 | summary="${BASH_REMATCH[2]}"
|
56 | echo " * [#${number}](${PULLS_URL}/${number}) - ${summary} ([${author}](${GITHUB_URL}/search?q=${author}&type=Users))"
|
57 | fi
|
58 | done
|
59 | }
|
60 | }
|
61 |
|
62 | if test ${#} -ne 1; then
|
63 | display_usage ${0}
|
64 | exit 1
|
65 | else
|
66 | main ${1}
|
67 | fi
|