def backport_pr(branch, num, project='ipython/ipython'): current_branch = get_current_branch() if branch != current_branch: check_call(['git', 'checkout', branch]) check_call(['git', 'pull']) pr = get_pull_request(project, num, auth=True) files = get_pull_request_files(project, num, auth=True) patch_url = pr['patch_url'] title = pr['title'] description = pr['body'] or '' fname = "PR%i.patch" % num if os.path.exists(fname): print("using patch from {fname}".format(**locals())) with open(fname, 'rb') as f: patch = f.read() else: req = urlopen(patch_url) patch = req.read() lines = description.splitlines() if len(lines) > 5: lines = lines[:5] + ['...'] description = '\n'.join(lines) msg = "Backport PR #%i: %s" % (num, title) + '\n\n' + description check = Popen(['git', 'apply', '--check', '--verbose'], stdin=PIPE) a, b = check.communicate(patch) if check.returncode: print("patch did not apply, saving to {fname}".format(**locals())) print("edit {fname} until `cat {fname} | git apply --check` succeeds". format(**locals())) print("then run tools/backport_pr.py {num} again".format(**locals())) if not os.path.exists(fname): with open(fname, 'wb') as f: f.write(patch) return 1 p = Popen(['git', 'apply'], stdin=PIPE) a, b = p.communicate(patch) filenames = [f['filename'] for f in files] filenames = [ f.replace('jupyter_notebook', 'IPython/html') for f in filenames ] check_call(['git', 'add'] + filenames) check_call(['git', 'commit', '-m', msg]) print("PR #%i applied, with msg:" % num) print() print(msg) print() if branch != current_branch: check_call(['git', 'checkout', current_branch]) return 0
def backport_pr(branch, num, project='ipython/ipython'): current_branch = get_current_branch() if branch != current_branch: check_call(['git', 'checkout', branch]) check_call(['git', 'pull']) pr = get_pull_request(project, num, auth=True) files = get_pull_request_files(project, num, auth=True) patch_url = pr['patch_url'] title = pr['title'] description = pr['body'] or '' fname = "PR%i.patch" % num if os.path.exists(fname): print("using patch from {fname}".format(**locals())) with open(fname, 'rb') as f: patch = f.read() else: req = urlopen(patch_url) patch = req.read() lines = description.splitlines() if len(lines) > 5: lines = lines[:5] + ['...'] description = '\n'.join(lines) msg = "Backport PR #%i: %s" % (num, title) + '\n\n' + description check = Popen(['git', 'apply', '--check', '--verbose'], stdin=PIPE) a,b = check.communicate(patch) if check.returncode: print("patch did not apply, saving to {fname}".format(**locals())) print("edit {fname} until `cat {fname} | git apply --check` succeeds".format(**locals())) print("then run tools/backport_pr.py {num} again".format(**locals())) if not os.path.exists(fname): with open(fname, 'wb') as f: f.write(patch) return 1 p = Popen(['git', 'apply'], stdin=PIPE) a,b = p.communicate(patch) filenames = [ f['filename'] for f in files ] filenames = [ f.replace('jupyter_notebook', 'IPython/html') for f in filenames ] check_call(['git', 'add'] + filenames) check_call(['git', 'commit', '-m', msg]) print("PR #%i applied, with msg:" % num) print() print(msg) print() if branch != current_branch: check_call(['git', 'checkout', current_branch]) return 0
def backport_pr(branch, num, project="ipython/ipython"): current_branch = get_current_branch() if branch != current_branch: check_call(["git", "checkout", branch]) check_call(["git", "pull"]) pr = get_pull_request(project, num, auth=True) files = get_pull_request_files(project, num, auth=True) patch_url = pr["patch_url"] title = pr["title"] description = pr["body"] fname = "PR%i.patch" % num if os.path.exists(fname): print("using patch from {fname}".format(**locals())) with open(fname, "rb") as f: patch = f.read() else: req = urlopen(patch_url) patch = req.read() lines = description.splitlines() if len(lines) > 5: lines = lines[:5] + ["..."] description = "\n".join(lines) msg = "Backport PR #%i: %s" % (num, title) + "\n\n" + description check = Popen(["git", "apply", "--check", "--verbose"], stdin=PIPE) a, b = check.communicate(patch) if check.returncode: print("patch did not apply, saving to {fname}".format(**locals())) print("edit {fname} until `cat {fname} | git apply --check` succeeds". format(**locals())) print("then run tools/backport_pr.py {num} again".format(**locals())) if not os.path.exists(fname): with open(fname, "wb") as f: f.write(patch) return 1 p = Popen(["git", "apply"], stdin=PIPE) a, b = p.communicate(patch) filenames = [f["filename"] for f in files] check_call(["git", "add"] + filenames) check_call(["git", "commit", "-m", msg]) print("PR #%i applied, with msg:" % num) print() print(msg) print() if branch != current_branch: check_call(["git", "checkout", current_branch]) return 0
def backport_pr(branch, num, project="statsmodels/statsmodels"): current_branch = get_current_branch() if branch != current_branch: check_call(["git", "checkout", branch]) check_call(["git", "pull"]) pr = get_pull_request(project, num, auth=True) files = get_pull_request_files(project, num, auth=True) patch_url = pr["patch_url"] title = pr["title"] description = pr["body"] fname = "PR%i.patch" % num if os.path.exists(fname): print("using patch from {fname}".format(**locals())) with open(fname) as f: patch = f.read() else: req = urlopen(patch_url) patch = req.read() msg = "Backport PR #%i: %s" % (num, title) + "\n\n" + description check = Popen(["git", "apply", "--check", "--verbose"], stdin=PIPE) a, b = check.communicate(patch) if check.returncode: print("patch did not apply, saving to {fname}".format(**locals())) print("edit {fname} until `cat {fname} | git apply --check` succeeds".format(**locals())) print("then run tools/backport_pr.py {num} again".format(**locals())) if not os.path.exists(fname): with open(fname, "wb") as f: f.write(patch) return 1 p = Popen(["git", "apply"], stdin=PIPE) a, b = p.communicate(patch) filenames = [f["filename"] for f in files] check_call(["git", "add"] + filenames) check_call(["git", "commit", "-m", msg]) print("PR #%i applied, with msg:" % num) print() print(msg) print() if branch != current_branch: check_call(["git", "checkout", current_branch]) return 0