fix: handle existing pull request error in create_pull_request to prevent crash
This commit is contained in:
parent
e56463d207
commit
cd9e32e4b0
|
@ -166,6 +166,20 @@ class GiteaClient:
|
|||
}
|
||||
|
||||
response = self.session.post(url, json=json_data)
|
||||
# If a pull request for this head/base already exists, return it instead of crashing
|
||||
if response.status_code == 422:
|
||||
logger.warning(
|
||||
"Pull request already exists for head %s and base %s", head, base
|
||||
)
|
||||
prs = self.get_pull_requests(owner, repo)
|
||||
for pr in prs:
|
||||
if (
|
||||
pr.get("head", {}).get("ref") == head
|
||||
and pr.get("base", {}).get("ref") == base
|
||||
):
|
||||
return pr
|
||||
# fallback to raise if we can’t find it
|
||||
response.raise_for_status()
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
|
@ -182,3 +196,15 @@ class GiteaClient:
|
|||
response = self.session.get(url)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
def get_pull_requests(
|
||||
self,
|
||||
owner: str,
|
||||
repo: str,
|
||||
state: str = "open",
|
||||
) -> list[dict]:
|
||||
"""Fetch pull requests for a repository."""
|
||||
url = f"{self.gitea_url}/repos/{owner}/{repo}/pulls?state={state}"
|
||||
response = self.session.get(url)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
|
Loading…
Reference in New Issue
Block a user