]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
.github/workflows/diff-ceph-config.yml: use --ref-commit-sha and --cmp-commit-sha 63714/head
authorNaveen Naidu <naveennaidu479@gmail.com>
Mon, 9 Jun 2025 08:02:44 +0000 (13:32 +0530)
committerNaveen Naidu <naveennaidu479@gmail.com>
Mon, 9 Jun 2025 08:02:44 +0000 (13:32 +0530)
update the config_diff.py to use `--ref-commit-sha` and
`--cmp-commit-sha` to repliace the three-dot diff [1] that Github uses
for showing it's diff. This way we only output the configuration changes
that have been made in the PR.

Signed-off-by: Naveen Naidu <naveennaidu479@gmail.com>
.github/workflows/diff-ceph-config.yml

index 53f15f04b71d02e102eaf526166895e127234a8b..ce1c51ec408a739fd37ece9e88de86aa36f62e1d 100644 (file)
@@ -20,12 +20,30 @@ jobs:
       - name: checkout ceph.git
         uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
         with:
+          ref: ${{ github.event.pull_request.head.sha }}
           path: ceph
           sparse-checkout: |
             src/script
             src/common/options
             .github/workflows
 
+      - name:  'Get common ancestor between PR and ceph upstream main branch'
+        id: get_common_ancestor
+        env:
+          branch_pr: origin/${{ github.event.pull_request.head.ref }}
+          refspec_pr: +${{ github.event.pull_request.head.sha }}:remotes/origin/${{ github.event.pull_request.head.ref }}
+        working-directory: ceph
+        run: |
+          # Fetch enough history to find a common ancestor commit (aka merge-base):
+          git fetch origin ${{ env.refspec_pr }} --depth=$(( ${{ github.event.pull_request.commits }} + 1 )) \
+            --no-tags --prune --no-recurse-submodules
+
+          # This should get the oldest commit in the local fetched history (the commit in ceph upstream from which PR branched from):
+          COMMON_ANCESTOR=$( git rev-list --first-parent --max-parents=0 --max-count=1 ${{ env.branch_pr }} )
+          COMMON_ANCESTOR_SHA=$( git log --format=%H "${COMMON_ANCESTOR}" )
+
+          echo "COMMON_ANCESTOR_SHA=${COMMON_ANCESTOR_SHA}" >> $GITHUB_ENV
+
       - name: Setup Python
         uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 #v5.6.0
         with:
@@ -41,12 +59,14 @@ jobs:
         env:
           REF_REPO: ${{ github.event.pull_request.base.repo.clone_url }}
           REF_BRANCH: ${{ github.event.pull_request.base.ref }}
+          REF_COMMIT_SHA: ${{ env.COMMON_ANCESTOR_SHA }}
           REMOTE_REPO: ${{ github.event.pull_request.head.repo.clone_url }}
           REMOTE_BRANCH: ${{ github.event.pull_request.head.ref }}
+          REMOTE_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
         run:  |
           {
             echo 'DIFF_JSON<<EOF'
-            python3 ./src/script/config-diff/config_diff.py diff-branch-remote-repo --ref-branch $REF_BRANCH  --remote-repo $REMOTE_REPO --cmp-branch $REMOTE_BRANCH --format=posix-diff --skip-clone
+            python3 ./src/script/config-diff/config_diff.py diff-branch-remote-repo --ref-branch $REF_BRANCH --ref-commit-sha $REF_COMMIT_SHA --remote-repo $REMOTE_REPO --cmp-branch $REMOTE_BRANCH --cmp-commit-sha $REMOTE_COMMIT_SHA --format=posix-diff --skip-clone
             echo EOF
           } >> "$GITHUB_OUTPUT"
         working-directory: ceph