import subprocess | |
from huggingface_hub.repository import _lfs_log_progress | |
def force_git_push( | |
repo, | |
): | |
""" | |
force a simple git push | |
Blocking. Will return url to commit on remote | |
repo. | |
""" | |
command = "git push --force" | |
try: | |
with _lfs_log_progress(): | |
process = subprocess.Popen( | |
command.split(), | |
stderr=subprocess.PIPE, | |
stdout=subprocess.PIPE, | |
encoding="utf-8", | |
cwd=repo.local_dir, | |
) | |
stdout, stderr = process.communicate() | |
return_code = process.poll() | |
process.kill() | |
if len(stderr): | |
print(stderr) | |
if return_code: | |
raise subprocess.CalledProcessError( | |
return_code, process.args, output=stdout, stderr=stderr | |
) | |
except subprocess.CalledProcessError as exc: | |
raise EnvironmentError(exc.stderr) | |
return repo.git_head_commit_url() |