Spaces:
Sleeping
Sleeping
import os | |
import shutil | |
from git import Repo, GitCommandError | |
import logging | |
log = logging.getLogger(__name__) | |
def clone_repo(repo_url: str, dest_folder: str = "cloned_repo") -> bool: | |
"""Clones or replaces a git repository locally.""" | |
if os.path.exists(dest_folder): | |
log.info(f"Removing existing directory: {dest_folder}") | |
try: | |
shutil.rmtree(dest_folder) | |
except OSError as e: | |
log.error(f"Error removing directory {dest_folder}: {e}") | |
return False | |
try: | |
log.info(f"Cloning repo from {repo_url} into {dest_folder}...") | |
Repo.clone_from(repo_url, dest_folder) | |
log.info("Repo cloned successfully.") | |
return True | |
except GitCommandError as e: | |
log.error(f"Error cloning repo: Git command failed - {e}") | |
return False | |
except Exception as e: | |
log.error(f"An unexpected error occurred during cloning: {e}") | |
return False |