Last active
April 11, 2024 07:33
-
-
Save bitmingw/69bfee10976a68078562a1f881eed5ab to your computer and use it in GitHub Desktop.
Auto update local repository with remote github repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
""" | |
Author: Ming Wen ([email protected]) | |
This script is used to track the changes in the github, and if a new commit | |
is found, update the local repository accordingly. | |
""" | |
from urllib.request import urlopen | |
from http.client import HTTPResponse | |
from subprocess import check_output | |
import json | |
import os | |
import sys | |
# Configurations | |
USERNAME = "" | |
REPO = "" | |
BRANCH = "master" | |
LOCAL_DIR = "" | |
def github_sync(directory): | |
os.chdir(directory) | |
remote_sha = fetch_remove_sha() | |
local_sha = fetch_local_sha() | |
if remote_sha != local_sha: | |
check_output(["git", "pull", "origin", BRANCH]) | |
print("The local repo has been updated") | |
return 1; | |
else: | |
print("The local repo is already up-to-date") | |
return 0; | |
def fetch_remove_sha(): | |
req_url = "https://api.github.com/repos/" + \ | |
USERNAME + "/" + REPO + "/branches/" + BRANCH | |
resp = urlopen(req_url) | |
resp_str = str(resp.read(), encoding="utf-8") | |
resp_data = json.loads(resp_str); | |
remote_sha = resp_data["commit"]["sha"] | |
return remote_sha | |
def fetch_local_sha(): | |
check_output(["git", "checkout", BRANCH]) | |
local_sha = str(check_output(["git", "rev-parse", "HEAD"]), encoding="utf-8") | |
return local_sha[:-1] # remove newline | |
if __name__ == "__main__": | |
sys.exit(github_sync(LOCAL_DIR)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment