gaming man
gaming man

Reputation: 42

How to automate pulling from a repository with GitHub Rest API in Python?

My goal is to automatically pull from a private github repository every time a change is pushed to the master branch, but I'm not sure how I should go about this.

Upvotes: 0

Views: 271

Answers (1)

alexzander
alexzander

Reputation: 1875

check this docs about github api pulls

example command

curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/octocat/hello-world/pulls

if the status is 200 then you will get a json response with metadata:

[
  {
    "url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347",
    "id": 1,
    "node_id": "MDExOlB1bGxSZXF1ZXN0MQ==",
    "html_url": "https://github.com/octocat/Hello-World/pull/1347",
    "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff",
    "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch",
    "issue_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347",
    "commits_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/commits",
    "review_comments_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347/comments",
    "review_comment_url": "https://api.github.com/repos/octocat/Hello-World/pulls/comments{/number}",
    "comments_url": "https://api.github.com/repos/octocat/Hello-World/issues/1347/comments",
    "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e",
    "number": 1347,

....

i guess from here you need to apply the diffs and the patches manually (using git ofcouse)

    "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff",
    "patch_url": "https://github.com/octocat/Hello-World/pull/1347.patch",

to apply the patch using git, check this stack-post

to do that in python, you need to use requests library and call git as subprocess command

Upvotes: 1

Related Questions