]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-133410: Use commit hashes for change detection (gh-133416)
authorAdam Turner <9087854+AA-Turner@users.noreply.github.com>
Mon, 5 May 2025 08:49:12 +0000 (09:49 +0100)
committerGitHub <noreply@github.com>
Mon, 5 May 2025 08:49:12 +0000 (10:49 +0200)
.github/workflows/reusable-context.yml
Tools/build/compute-changes.py

index 73e036a146f5d420069cb72328a65a08a1122d40..73dc254edc5fbc70d11b98ccf19b6a88bdfd3d40 100644 (file)
@@ -97,6 +97,8 @@ jobs:
       run: python Tools/build/compute-changes.py
       env:
         GITHUB_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
+        CCF_TARGET_REF: ${{ github.base_ref || github.event.repository.default_branch }}
+        CCF_HEAD_REF: ${{ github.event.pull_request.head.sha || github.sha }}
 
     - name: Compute hash for config cache key
       id: config-hash
index b3be7df2dba6d009e1e58fc2156094e64069e1d2..cfdd55fd1925fd68c667e764ec8a72ec86684acf 100644 (file)
@@ -56,12 +56,10 @@ class Outputs:
 
 
 def compute_changes() -> None:
-    target_branch, head_branch = git_branches()
-    if target_branch and head_branch:
+    target_branch, head_ref = git_refs()
+    if target_branch and head_ref:
         # Getting changed files only makes sense on a pull request
-        files = get_changed_files(
-            f"origin/{target_branch}", f"origin/{head_branch}"
-        )
+        files = get_changed_files(target_branch, head_ref)
         outputs = process_changed_files(files)
     else:
         # Otherwise, just run the tests
@@ -89,15 +87,15 @@ def compute_changes() -> None:
     write_github_output(outputs)
 
 
-def git_branches() -> tuple[str, str]:
-    target_branch = os.environ.get("GITHUB_BASE_REF", "")
-    target_branch = target_branch.removeprefix("refs/heads/")
-    print(f"target branch: {target_branch!r}")
+def git_refs() -> tuple[str, str]:
+    target_ref = os.environ.get("CCF_TARGET_REF", "")
+    target_ref = target_ref.removeprefix("refs/heads/")
+    print(f"target ref: {target_ref!r}")
 
-    head_branch = os.environ.get("GITHUB_HEAD_REF", "")
-    head_branch = head_branch.removeprefix("refs/heads/")
-    print(f"head branch: {head_branch!r}")
-    return target_branch, head_branch
+    head_ref = os.environ.get("CCF_HEAD_REF", "")
+    head_ref = head_ref.removeprefix("refs/heads/")
+    print(f"head ref: {head_ref!r}")
+    return f"origin/{target_ref}", head_ref
 
 
 def get_changed_files(