From f621c5e977d1d78df1e588e1f5799a90d0706af6 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Thu, 6 Apr 2017 10:28:53 +0200 Subject: [PATCH 1/2] BLD: update merge script to update on github --- scripts/{merge-py.py => merge-pr.py} | 51 ++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) rename scripts/{merge-py.py => merge-pr.py} (84%) diff --git a/scripts/merge-py.py b/scripts/merge-pr.py similarity index 84% rename from scripts/merge-py.py rename to scripts/merge-pr.py index b9350f8feceb8..a61801b252d29 100755 --- a/scripts/merge-py.py +++ b/scripts/merge-pr.py @@ -99,6 +99,14 @@ def continue_maybe(prompt): fail("Okay, exiting") +def continue_maybe2(prompt): + result = input("\n%s (y/n): " % prompt) + if result.lower() != "y": + return False + else: + return True + + original_head = run_cmd("git rev-parse HEAD")[:8] @@ -193,6 +201,40 @@ def merge_pr(pr_num, target_ref): return merge_hash +def update_pr(pr_num, user_login, base_ref): + + pr_branch_name = "%s_MERGE_PR_%s" % (BRANCH_PREFIX, pr_num) + + run_cmd("git fetch %s pull/%s/head:%s" % (PR_REMOTE_NAME, pr_num, + pr_branch_name)) + run_cmd("git checkout %s" % pr_branch_name) + + continue_maybe("Update ready (local ref %s)? Push to %s/%s?" % ( + pr_branch_name, user_login, base_ref)) + + push_user_remote = "https://github.com/%s/pandas.git" % user_login + + try: + run_cmd('git push %s %s:%s' % (push_user_remote, pr_branch_name, + base_ref)) + except Exception as e: + + if continue_maybe2("Force push?"): + try: + run_cmd( + 'git push -f %s %s:%s' % (push_user_remote, pr_branch_name, + base_ref)) + except Exception as e: + fail("Exception while pushing: %s" % e) + clean_up() + else: + fail("Exception while pushing: %s" % e) + clean_up() + + clean_up() + print("Pull request #%s updated!" % pr_num) + + def cherry_pick(pr_num, merge_hash, default_branch): pick_ref = input("Enter a branch name [%s]: " % default_branch) if pick_ref == "": @@ -257,8 +299,13 @@ def fix_version_from_branch(branch, versions): print("\n=== Pull Request #%s ===" % pr_num) print("title\t%s\nsource\t%s\ntarget\t%s\nurl\t%s" % (title, pr_repo_desc, target_ref, url)) -continue_maybe("Proceed with merging pull request #%s?" % pr_num) +continue_maybe("Proceed with updating or merging pull request #%s?" % pr_num) merged_refs = [target_ref] -merge_hash = merge_pr(pr_num, target_ref) +update = continue_maybe2("Update PR and push to github (y) or merge locally (n)?") + +if update: + merge_hash = update_pr(pr_num, user_login, base_ref) +else: + merge_hash = merge_pr(pr_num, target_ref) From a06d0fc6b26dfd882333fb833e791c142f525071 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Fri, 7 Apr 2017 18:36:45 +0200 Subject: [PATCH 2/2] adapt question --- scripts/merge-pr.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/merge-pr.py b/scripts/merge-pr.py index a61801b252d29..1fc4eef3d0583 100755 --- a/scripts/merge-pr.py +++ b/scripts/merge-pr.py @@ -299,13 +299,17 @@ def fix_version_from_branch(branch, versions): print("\n=== Pull Request #%s ===" % pr_num) print("title\t%s\nsource\t%s\ntarget\t%s\nurl\t%s" % (title, pr_repo_desc, target_ref, url)) -continue_maybe("Proceed with updating or merging pull request #%s?" % pr_num) + + merged_refs = [target_ref] -update = continue_maybe2("Update PR and push to github (y) or merge locally (n)?") +print("\nProceed with updating or merging pull request #%s?" % pr_num) +update = input("Update PR and push to remote (r), merge locally (l), " + "or do nothing (n) ?") +update = update.lower() -if update: +if update == 'r': merge_hash = update_pr(pr_num, user_login, base_ref) -else: +elif update == 'l': merge_hash = merge_pr(pr_num, target_ref)