diff options
author | Joffrey F <joffrey@docker.com> | 2018-04-27 18:36:48 -0700 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2018-04-27 18:36:48 -0700 |
commit | bc0344155016d713587db564a39800899f6be04c (patch) | |
tree | f00a9e95049b6d0f9e6ce6772b97b6445eca53a2 /script | |
parent | 90c89e34f19364023f9ff06a32c059c3c86efaaa (diff) |
Automatically detect pickable PRs for patch releases
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'script')
-rwxr-xr-x | script/release/release.py | 9 | ||||
-rw-r--r-- | script/release/release/repository.py | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/script/release/release.py b/script/release/release.py index d0545a7e..e9a52c4a 100755 --- a/script/release/release.py +++ b/script/release/release.py @@ -34,6 +34,15 @@ def create_initial_branch(repository, args): release_branch = repository.create_release_branch(args.release, args.base) if args.base and args.cherries: print('Detected patch version.') + auto_prs = repository.get_prs_in_milestone(args.release) + if auto_prs: + print( + 'Found the following PRs in this release\'s milestone: {}'.format(', '.join(auto_prs)) + ) + proceed = yesno('Automatically cherry-pick detected PRs? Y/n', default=True) + if proceed: + repository.cherry_pick_prs(release_branch, auto_prs) + cherries = input('Indicate (space-separated) PR numbers to cherry-pick then press Enter:\n') repository.cherry_pick_prs(release_branch, cherries.split()) diff --git a/script/release/release/repository.py b/script/release/release/repository.py index d4d1c720..9a5d432c 100644 --- a/script/release/release/repository.py +++ b/script/release/release/repository.py @@ -196,6 +196,24 @@ class Repository(object): f.flush() self.git_repo.git.am('--3way', f.name) + def get_prs_in_milestone(self, version): + milestones = self.gh_repo.get_milestones(state='open') + milestone = None + for ms in milestones: + if ms.title == version: + milestone = ms + break + if not milestone: + print('Didn\'t find a milestone matching "{}"'.format(version)) + return None + + issues = self.gh_repo.get_issues(milestone=milestone, state='all') + prs = [] + for issue in issues: + if issue.pull_request is not None: + prs.append(issue.number) + return sorted(prs) + def get_contributors(pr_data): commits = pr_data.get_commits() |