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

Aiden Grossman via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 3 16:06:11 PDT 2023


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

>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/3] 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/3] 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.

>From c7bc9de08117253db0cbd748e81c575fe73de63b Mon Sep 17 00:00:00 2001
From: Aiden Grossman <agrossman154 at yahoo.com>
Date: Fri, 3 Nov 2023 16:05:58 -0700
Subject: [PATCH 3/3] Check merge commits, only run if commit is mergeable

---
 .github/workflows/pr-code-format.yml | 18 ++++--------------
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/pr-code-format.yml b/.github/workflows/pr-code-format.yml
index 555081471a7ef7b..30b9ef7c5963fb0 100644
--- a/.github/workflows/pr-code-format.yml
+++ b/.github/workflows/pr-code-format.yml
@@ -5,6 +5,7 @@ permissions:
 
 jobs:
   code_formatter:
+    if: ${{ github.event.pull_request.mergeable }}
     runs-on: ubuntu-latest
     steps:
       # Get changed files before checking out the repository to force the action
@@ -17,23 +18,13 @@ jobs:
         with:
           separator: ","
 
-      - 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 }}
+          ref: "refs/pull/${{ github.event.number }}/merge"
+          fetch-depth: 2
           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.
@@ -69,13 +60,12 @@ jobs:
       - name: Run code formatter
         env:
           GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
-          PR_DEPTH: ${{ github.event.pull_request.commits }}
           CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
         working-directory: ./pr-sources
         run: |
           python ../llvm-sources/llvm/utils/git/code-format-helper.py \
             --token ${{ secrets.GITHUB_TOKEN }} \
             --issue-number $GITHUB_PR_NUMBER \
-            --start-rev HEAD~$PR_DEPTH \
+            --start-rev HEAD^ \
             --end-rev HEAD \
             --changed-files "$CHANGED_FILES"



More information about the llvm-commits mailing list