42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
import git as gitpython
|
|
|
|
def reset_from_origin(repo_path:str) -> None:
|
|
repo = gitpython.Repo(repo_path)
|
|
repo.remotes['origin'].fetch()
|
|
repo.git.reset('--hard', 'origin/master')
|
|
|
|
|
|
def create_repo(to_clone, local_path, author_name, author_email):
|
|
origin = gitpython.Repo(to_clone)
|
|
new_repo = origin.clone(local_path)
|
|
with new_repo.config_writer() as cw:
|
|
cw.add_section('user')
|
|
cw.set('user', 'name', author_name)
|
|
cw.set('user', 'email', author_email)
|
|
|
|
def dirty(repo_path:str):
|
|
repo = gitpython.Repo(repo_path)
|
|
status = repo.git.status()
|
|
return 'nothing to commit, working directory clean' not in status
|
|
|
|
def make_commit(repo_path, author_name, author_email):
|
|
"""Given a path to a repository, adds everything and commits it. If there
|
|
are no unstaged changes, does nothing."""
|
|
if not dirty(repo_path):
|
|
return
|
|
repo = gitpython.Repo(repo_path)
|
|
index = repo.index
|
|
|
|
index.add([path for (path, _), __ in index.entries.items()])
|
|
|
|
actor = gitpython.Actor(author_name, author_email)
|
|
index.commit('wiki update', author=actor, committer=actor)
|
|
|
|
def push_all(repo_path):
|
|
repo = gitpython.Repo(repo_path)
|
|
repo.remotes['origin'].push()
|
|
|
|
def pull_from_origin(repo_path):
|
|
repo = gitpython.Repo(repo_path)
|
|
repo.remotes['origin'].pull()
|