made checkout function more modular

This commit is contained in:
Karma Riuk
2025-03-31 21:20:56 +02:00
parent f79d3d7807
commit c20f9d6a6c

View File

@ -109,22 +109,22 @@ def get_diffs_after(repo: Repository, pr: PullRequest) -> dict[str, str]:
raise NoDiffsAfterError(e) raise NoDiffsAfterError(e)
def checkout(repo_path: str, pr: PullRequest) -> None: def checkout(repo_path: str, sha: str, pr_number: int) -> None:
try: try:
ensure_full_history(repo_path) ensure_full_history(repo_path)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
raise CantEnsureFullHistoryError(e.stderr) raise CantEnsureFullHistoryError(e.stderr)
try: try:
run_git_cmd(["checkout", pr.merge_commit_sha], repo_path) run_git_cmd(["checkout", sha], repo_path)
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
try: try:
run_git_cmd(["fetch", "origin", f"pull/{pr.number}/merge"], repo_path) run_git_cmd(["fetch", "origin", f"pull/{pr_number}/merge"], repo_path)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
raise CantFetchPRError(e.stderr) raise CantFetchPRError(e.stderr)
try: try:
run_git_cmd(["checkout", pr.merge_commit_sha], repo_path) run_git_cmd(["checkout", sha], repo_path)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
raise CantCheckoutCommitError(e.stderr) raise CantCheckoutCommitError(e.stderr)
@ -168,7 +168,7 @@ def get_files(pr: PullRequest, repo: Repository, repo_path: str) -> dict[str, Fi
except UnicodeError as e: except UnicodeError as e:
contents_after = "Binary content (from API), to be ignored" contents_after = "Binary content (from API), to be ignored"
except Exception as e: except Exception as e:
checkout(repo_path, pr) checkout(repo_path, pr.merge_commit_sha, pr.number)
contents_after = try_read_file(os.path.join(repo_path, file.filename)) contents_after = try_read_file(os.path.join(repo_path, file.filename))
ret[file.filename] = FileData( ret[file.filename] = FileData(
@ -273,8 +273,12 @@ def process_pull(
"Getting the comments...", "Getting the comments...",
lambda: entry.comments.extend(get_comments(pr)), lambda: entry.comments.extend(get_comments(pr)),
), ),
("Checkout out merge commit...", lambda: checkout(repo_path, pr)), ("Checkout out base commit...", lambda: checkout(repo_path, pr.base.sha, pr.number)),
("Archiving the repo...", lambda: archive_repo(repo_path, pr.number, archive_destination)), ("Archiving the repo...", lambda: archive_repo(repo_path, pr.number, archive_destination)),
(
"Checkout out merge commit...",
lambda: checkout(repo_path, pr.merge_commit_sha, pr.number),
),
] ]
pbar = tqdm(total=len(setup_steps) + 6, desc="Processing PR", leave=False) pbar = tqdm(total=len(setup_steps) + 6, desc="Processing PR", leave=False)