[llvm] Reland pr code format updates (PR #71131)

Aiden Grossman via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 2 18:51:51 PDT 2023


https://github.com/boomanaiden154 created https://github.com/llvm/llvm-project/pull/71131

This PR relands https://github.com/llvm/llvm-project/pull/69766 after it caused failures due to being unable to fetch branches from forks. I was using the wrong ref, so it tried to pull the same branch name from `llvm/llvm-project` rather than trying to pull the branch from the fork that the PR was created from. This is also why it didn't show up in my testing on my fork as I was only testing PRs on branches from within the same repository.

>From f56c8c2fd1592d65aff7554c241beecafd42171c Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Mon, 30 Oct 2023 12:23:51 -0700
Subject: [PATCH 1/2] Reland "[Github] Fetch all commits in PR for code
 formatting checks (#69766)"

This commit relands 4aa12afb967bd7c5f051f3b72271f787f1a7538b. This was
originally reverted as it caused fetch failures due to the usage of the
wrong ref. I didn't catch this in testing as it was attempting to check
the branch out from origin, where it didn't exist, but did on my fork as
I never tested any cross-repo PRs.
---
 .github/workflows/pr-code-format.yml | 46 ++++++++++++++++++++--------
 1 file changed, 33 insertions(+), 13 deletions(-)

diff --git a/.github/workflows/pr-code-format.yml b/.github/workflows/pr-code-format.yml
index fa0e69211b14788..4e20bc5d9374788 100644
--- a/.github/workflows/pr-code-format.yml
+++ b/.github/workflows/pr-code-format.yml
@@ -7,17 +7,37 @@ jobs:
   code_formatter:
     runs-on: ubuntu-latest
     steps:
-      - name: Fetch LLVM sources
-        uses: actions/checkout at v4
-        with:
-          fetch-depth: 2 # Fetches only the last 2 commits
-
+      # Get changed files before checking out the repository to force the action
+      # to analyze the diff from the Github API rather than looking at the
+      # shallow clone and erroring out, which is significantly more prone to
+      # failure.
       - name: Get changed files
         id: changed-files
         uses: tj-actions/changed-files at v39
         with:
           separator: ","
-          fetch_depth: 2000 # Fetches only the last 2000 commits
+
+      - name: Calculate number of commits to fetch
+        run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1 ))" >> "${GITHUB_ENV}"
+
+      - name: Fetch PR sources
+        uses: actions/checkout at v4
+        with:
+          ref: ${{ github.event.pull_request.head.sha }}
+          fetch-depth: ${{ env.PR_FETCH_DEPTH }}
+          path: pr-sources
+
+      # We need to make sure that we aren't executing/using any code from the
+      # PR for security reasons as we're using pull_request_target. Checkout
+      # the target branch with the necessary files.
+      - name: Fetch LLVM Sources
+        uses: actions/checkout at v4
+        with:
+          sparse-checkout: |
+            llvm/utils/git/requirements_formatting.txt
+            llvm/utils/git/code-format-helper.py
+          sparse-checkout-cone-mode: false
+          path: llvm-sources
 
       - name: "Listed files"
         run: |
@@ -34,21 +54,21 @@ jobs:
         with:
           python-version: '3.11'
           cache: 'pip'
-          cache-dependency-path: 'llvm/utils/git/requirements_formatting.txt'
+          cache-dependency-path: 'llvm-sources/llvm/utils/git/requirements_formatting.txt'
 
       - name: Install python dependencies
-        run: pip install -r llvm/utils/git/requirements_formatting.txt
+        run: pip install -r llvm-sources/llvm/utils/git/requirements_formatting.txt
 
       - name: Run code formatter
         env:
           GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
-          START_REV: ${{ github.event.pull_request.base.sha }}
-          END_REV: ${{ github.event.pull_request.head.sha }}
+          PR_DEPTH: ${{ github.event.pull_request.commits }}
           CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
+        working-directory: ./pr-sources
         run: |
-          python llvm/utils/git/code-format-helper.py \
+          python ../llvm-sources/llvm/utils/git/code-format-helper.py \
             --token ${{ secrets.GITHUB_TOKEN }} \
             --issue-number $GITHUB_PR_NUMBER \
-            --start-rev $START_REV \
-            --end-rev $END_REV \
+            --start-rev HEAD~$PR_DEPTH \
+            --end-rev HEAD \
             --changed-files "$CHANGED_FILES"

>From dbcd677d4057d4048c17aabf2f369705a7a66c2f Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Thu, 2 Nov 2023 00:52:12 -0700
Subject: [PATCH 2/2] Add git log step for debugging

---
 .github/workflows/pr-code-format.yml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/.github/workflows/pr-code-format.yml b/.github/workflows/pr-code-format.yml
index 4e20bc5d9374788..555081471a7ef7b 100644
--- a/.github/workflows/pr-code-format.yml
+++ b/.github/workflows/pr-code-format.yml
@@ -27,6 +27,13 @@ jobs:
           fetch-depth: ${{ env.PR_FETCH_DEPTH }}
           path: pr-sources
 
+      - name: Print commits being evaluated
+        working-directory: ./pr-sources
+        env:
+          PR_DEPTH: ${{ github.event.pull_request.commits }}
+        run: |
+          git log HEAD~$PR_DEPTH...HEAD
+
       # We need to make sure that we aren't executing/using any code from the
       # PR for security reasons as we're using pull_request_target. Checkout
       # the target branch with the necessary files.



More information about the llvm-commits mailing list