| 109 | |
| 110 | |
| 111 | def get_pull_requests(repo, revision_range): |
| 112 | prnums = [] |
| 113 | |
| 114 | # From regular merges |
| 115 | merges = this_repo.git.log("--oneline", "--merges", revision_range) |
| 116 | issues = re.findall("Merge pull request \\#(\\d*)", merges) |
| 117 | prnums.extend(int(s) for s in issues) |
| 118 | |
| 119 | # From Homu merges (Auto merges) |
| 120 | issues = re.findall("Auto merge of \\#(\\d*)", merges) |
| 121 | prnums.extend(int(s) for s in issues) |
| 122 | |
| 123 | # From fast forward squash-merges |
| 124 | commits = this_repo.git.log( |
| 125 | "--oneline", "--no-merges", "--first-parent", revision_range |
| 126 | ) |
| 127 | issues = re.findall("^.*\\(\\#(\\d+)\\)$", commits, re.M) |
| 128 | prnums.extend(int(s) for s in issues) |
| 129 | |
| 130 | # get PR data from GitHub repo |
| 131 | prnums.sort() |
| 132 | prs = [repo.get_pull(n) for n in prnums] |
| 133 | return prs |
| 134 | |
| 135 | |
| 136 | def build_components(revision_range, heading="Contributors"): |