From ca8b12153bedd163fe9bcce3205580d3c849d95e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:56:23 +0000 Subject: [PATCH 1/3] Initial plan From 86717bd2316edde4d46228ed33fd931d9b099672 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:58:38 +0000 Subject: [PATCH 2/3] fix: improve error handling in get_pr_commit_messages() with parent check and warning logs Co-authored-by: shenxianpeng <3353385+shenxianpeng@users.noreply.github.com> --- __pycache__/main.cpython-312.pyc | Bin 0 -> 13163 bytes main.py | 34 ++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 __pycache__/main.cpython-312.pyc diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e78467d66b5493fcc34b1c94193779c35178a793 GIT binary patch literal 13163 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 i-_t|g-3@m7=`=^Nws_ list[str]: """ if os.getenv("GITHUB_EVENT_NAME", "") != "pull_request": return [] + + # Verify HEAD is a merge commit with at least 2 parents before using HEAD^1..HEAD^2. + # A non-merge checkout (e.g. shallow fetch missing parents) would make the range query fail. + try: + parent_check = subprocess.run( + ["git", "rev-parse", "--verify", "HEAD^2"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + encoding="utf-8", + check=False, + ) + if parent_check.returncode != 0: + print( + "::warning::HEAD does not have a second parent; skipping per-commit " + "PR message validation. This is expected for non-merge checkouts or " + f"shallow fetches. Details: {parent_check.stderr.strip()}", + file=sys.stderr, + ) + return [] + except Exception as e: + print(f"::warning::Could not verify HEAD parents: {e}", file=sys.stderr) + return [] + try: result = subprocess.run( ["git", "log", "--pretty=format:%B%x00", "HEAD^1..HEAD^2"], @@ -53,10 +76,15 @@ def get_pr_commit_messages() -> list[str]: encoding="utf-8", check=False, ) - if result.returncode == 0 and result.stdout: + if result.returncode == 0: return [m.strip() for m in result.stdout.split("\x00") if m.strip()] - except Exception: - pass + print( + f"::warning::git log HEAD^1..HEAD^2 failed (exit {result.returncode}): " + f"{result.stderr.strip()}", + file=sys.stderr, + ) + except Exception as e: + print(f"::warning::Failed to retrieve PR commit messages: {e}", file=sys.stderr) return [] From 235a4fc361e5ab5b7aa977d4c793a97af58174b6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:58:54 +0000 Subject: [PATCH 3/3] chore: add __pycache__ and *.pyc to .gitignore Co-authored-by: shenxianpeng <3353385+shenxianpeng@users.noreply.github.com> --- .gitignore | 2 ++ __pycache__/main.cpython-312.pyc | Bin 13163 -> 0 bytes 2 files changed, 2 insertions(+) delete mode 100644 __pycache__/main.cpython-312.pyc diff --git a/.gitignore b/.gitignore index 43f4b6f..1e248ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ venv/ .venv/ +__pycache__/ +*.pyc diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc deleted file mode 100644 index e78467d66b5493fcc34b1c94193779c35178a793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13163 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 i-_t|g-3@m7=`=^Nws_