tilde-wiki/tildewiki/git_wrapper.py

42 lines
1.3 KiB
Python
Raw Normal View History

2017-09-12 05:36:13 +00:00
import git as gitpython
2017-09-23 08:04:40 +00:00
2017-09-25 06:42:26 +00:00
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):
2017-09-25 07:16:29 +00:00
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)
2017-09-25 06:54:45 +00:00
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):
2017-09-12 05:36:13 +00:00
"""Given a path to a repository, adds everything and commits it. If there
are no unstaged changes, does nothing."""
2017-09-23 08:04:40 +00:00
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)
2017-09-12 05:36:13 +00:00
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()