feat: implement new branch creation process using temporary clone and aider

This commit is contained in:
Jon Michael Aanes (aider) 2025-04-13 14:56:55 +02:00
parent ba82eaa1f5
commit dbc86c85d4

View File

@ -9,6 +9,9 @@ import argparse
import requests import requests
import sys import sys
import dataclasses import dataclasses
import tempfile
import subprocess
import os
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -94,11 +97,19 @@ def main():
title = issue.get("title", f"Issue {issue_number}") title = issue.get("title", f"Issue {issue_number}")
branch_name = f"issue-{issue_number}" branch_name = f"issue-{issue_number}"
try: try:
created = client.create_branch(args.owner, args.repo, branch_name, base_sha) with tempfile.TemporaryDirectory() as tmpdirname:
if created: repo_url = f"{args.gitea_url}/repos/{args.owner}/{args.repo}.git"
subprocess.run(["git", "clone", repo_url, tmpdirname], check=True)
subprocess.run(["git", "-C", tmpdirname, "checkout", args.base_branch], check=True)
subprocess.run(["git", "-C", tmpdirname, "checkout", "-b", branch_name], check=True)
message = issue.get("body", "")
subprocess.run(["aider", message], check=True)
subprocess.run(["git", "-C", tmpdirname, "add", "."], check=True)
subprocess.run(["git", "-C", tmpdirname, "commit", "-m", f"Apply aider for issue {issue_number}"], check=True)
subprocess.run(["git", "-C", tmpdirname, "push", "origin", branch_name], check=True)
print(f"Created branch {branch_name} for issue {issue_number}.") print(f"Created branch {branch_name} for issue {issue_number}.")
except Exception as e: except Exception as e:
print(f"Error creating branch {branch_name}: {e}") print(f"Error processing issue {issue_number}: {e}")
body = f"Automatically generated pull request for issue: {issue.get('html_url', 'unknown')}" body = f"Automatically generated pull request for issue: {issue.get('html_url', 'unknown')}"
try: try:
pr = client.create_pull_request(args.owner, args.repo, f"[Issue {issue_number}] {title}", branch_name, args.base_branch, body) pr = client.create_pull_request(args.owner, args.repo, f"[Issue {issue_number}] {title}", branch_name, args.base_branch, body)