mirror of https://github.com/docker/compose.git
Add support for PR cherry picks
Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
parent
4fab78d7e0
commit
b68811fd7f
|
@ -30,6 +30,11 @@ from release.utils import update_run_sh_version
|
||||||
|
|
||||||
def create_initial_branch(repository, release, base, bintray_user):
|
def create_initial_branch(repository, release, base, bintray_user):
|
||||||
release_branch = repository.create_release_branch(release, base)
|
release_branch = repository.create_release_branch(release, base)
|
||||||
|
if base:
|
||||||
|
print('Detected patch version.')
|
||||||
|
cherries = input('Indicate PR#s to cherry-pick then press Enter:\n')
|
||||||
|
repository.cherry_pick_prs(release_branch, cherries.split())
|
||||||
|
|
||||||
return create_bump_commit(repository, release_branch, bintray_user)
|
return create_bump_commit(repository, release_branch, bintray_user)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,9 @@ from __future__ import absolute_import
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
import requests
|
||||||
from git import GitCommandError
|
from git import GitCommandError
|
||||||
from git import Repo
|
from git import Repo
|
||||||
from github import Github
|
from github import Github
|
||||||
|
@ -111,7 +113,7 @@ class Repository(object):
|
||||||
if not release.draft:
|
if not release.draft:
|
||||||
print(
|
print(
|
||||||
'The release at {} is no longer a draft. If you TRULY intend '
|
'The release at {} is no longer a draft. If you TRULY intend '
|
||||||
'to remove it, please do so manually.'
|
'to remove it, please do so manually.'.format(release.url)
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
release.delete_release()
|
release.delete_release()
|
||||||
|
@ -171,6 +173,26 @@ class Repository(object):
|
||||||
with open(os.path.join(REPO_ROOT, 'compose', 'GITSHA'), 'w') as f:
|
with open(os.path.join(REPO_ROOT, 'compose', 'GITSHA'), 'w') as f:
|
||||||
f.write(self.git_repo.head.commit.hexsha[:7])
|
f.write(self.git_repo.head.commit.hexsha[:7])
|
||||||
|
|
||||||
|
def cherry_pick_prs(self, release_branch, ids):
|
||||||
|
if not ids:
|
||||||
|
return
|
||||||
|
release_branch.checkout()
|
||||||
|
for i in ids:
|
||||||
|
try:
|
||||||
|
i = int(i)
|
||||||
|
except ValueError as e:
|
||||||
|
raise ScriptError('Invalid PR id: {}'.format(e))
|
||||||
|
print('Retrieving PR#{}'.format(i))
|
||||||
|
pr = self.gh_repo.get_pull(i)
|
||||||
|
patch_data = requests.get(pr.patch_url).text
|
||||||
|
self.apply_patch(patch_data)
|
||||||
|
|
||||||
|
def apply_patch(self, patch_data):
|
||||||
|
with tempfile.NamedTemporaryFile(mode='w', prefix='_compose_cherry', encoding='utf-8') as f:
|
||||||
|
f.write(patch_data)
|
||||||
|
f.flush()
|
||||||
|
self.git_repo.git.am('--3way', f.name)
|
||||||
|
|
||||||
|
|
||||||
def get_contributors(pr_data):
|
def get_contributors(pr_data):
|
||||||
commits = pr_data.get_commits()
|
commits = pr_data.get_commits()
|
||||||
|
|
Loading…
Reference in New Issue