in supporting-blog-content/github-assistant/index.py [0:0]
def clone_repository(owner, repo, branch, base_path="/tmp"):
branch = branch or os.getenv("GITHUB_BRANCH")
if not branch:
raise ValueError(
"Branch is not provided and GITHUB_BRANCH environment variable is not set."
)
local_repo_path = os.path.join(base_path, owner, repo)
clone_url = f"https://github.com/{owner}/{repo}.git"
if os.path.exists(local_repo_path):
print(f"Repository already exists at {local_repo_path}. Skipping clone.")
return local_repo_path
attempts = 3
for attempt in range(attempts):
try:
os.makedirs(local_repo_path, exist_ok=True)
print(f"Attempting to clone repository... Attempt {attempt + 1}")
subprocess.run(
["git", "clone", "-b", branch, clone_url, local_repo_path], check=True
)
print(f"Repository cloned into {local_repo_path}.")
return local_repo_path
except subprocess.CalledProcessError:
print(f"Attempt {attempt + 1} failed, retrying...")
time.sleep(10)
if attempt < attempts - 1:
continue
else:
raise Exception("Failed to clone repository after multiple attempts")