blob: f7a938fa73529cb2d14253650f4e60588ccbca0f [file]
class GitManager:
def __init__(self, executor):
self.executor = executor
def clone(self, host, remote_url, target_dir):
self.executor.execute(host, f"git clone {remote_url} {target_dir}")
def fetch(self, host, target_dir, remote="origin"):
self.executor.execute(host, f"git -C {target_dir} fetch --prune --tags {remote}")
def checkout(self, host, target_dir, branch="main"):
self.executor.execute(host, f"git -C {target_dir} checkout {branch}")
def rebase(self, host, target_dir, remote="origin", branch="main"):
self.executor.execute(host, f"git -C {target_dir} rebase {remote}/{branch}")
def get_revision_from_timestamp(self, host, target_dir, timestamp):
get_revision_from_timestamp_command = f"git -C {target_dir} rev-list -n 1 --before=\"{timestamp}\" --date=iso8601 origin/main"
return self.executor.execute(host, get_revision_from_timestamp_command, output=True)[0].strip()
def get_revision_from_local_repository(self, host, target_dir):
return self.executor.execute(host, f"git -C {target_dir} rev-parse --short HEAD", output=True)[0].strip()