pythongitversion-controlgithub-apipygithub

how to merge branch into master by PyGithub


For example, I have a file t.json, the content is:

{
  "a": "abcdefg"
}

And file t.json is pushed to to master branch. Then I add some content to the file, and checkout to a new branch so the file looks like this now:

{
  "a": "abcdefg",
  "b": "mkjuujj"
}

Now I can compare two commits by using PyGithub. Codes are like this:

WORKING_BRANCH = "my_new_branch"
new_branch_ref_str = "refs/heads/%s" % WORKING_BRANCH
branch_ref = None
all_ref = repo.get_git_refs()

for ref in all_ref:
    if ref.ref == new_branch_ref_str:
        branch_ref = ref
        break

if not branch_ref:
    # create branch from this commit
    b = repo.get_branch("master")
    branch_ref = repo.create_git_ref(ref=new_branch_ref_str,
                                 sha=b.commit.sha)

    last_head = repo.get_branch(WORKING_BRANCH)
    fc = repo.get_file_contents("/t.json", ref=WORKING_BRANCH)
    file = 't.json'
    commit_message = "create a new branch with changes"
    input_file = open(file, 'rb')
    data = input_file.read()


    result = repo.update_file("/t.json",
                          commit_message,
                          data,
                          fc.sha, branch=WORKING_BRANCH)

    diff_url = repo.compare(last_head.commit.sha,
                        result['commit'].sha)

    print diff_url.diff_url

this is what I got:

diff --git a/t.json b/t.json
index ef03bf5..b775e51 100644
--- a/t.json
+++ b/t.json
@@ -1,3 +1,4 @@
 {
-  "a": "abcdefg"
+  "a": "abcdefg",
+  "b": "mkjuujj"
 }

What should I do to merge my_new_branch into master branch by using PyGithub. Thank you very much. Really appreciate it.


Solution

  • try:
        base = repo.get_branch("master")
        head = repo.get_branch(WORKING_BRANCH)
    
        merge_to_master = repo.merge("master",
                            head.commit.sha, "merge to master")
    
    except Exception as ex:
        print ex