diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml index 83c1ca55..c2d98376 100644 --- a/.github/workflows/quality-checks.yml +++ b/.github/workflows/quality-checks.yml @@ -100,9 +100,26 @@ jobs: echo "frontend_changed=true" >> $GITHUB_OUTPUT exit 0 fi + # Try to fetch the PR base ref. This may fail for forked PRs or other cases. git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1 || true - CHANGED=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }}...HEAD || true) - echo "Changed files:\n$CHANGED" + + # Compute changed files against the PR base ref, fallback to origin/main, then fallback to last 10 commits + CHANGED=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }}...HEAD 2>/dev/null || echo "") + echo "Changed files (base ref):\n$CHANGED" + + if [ -z "$CHANGED" ]; then + echo "Base ref diff empty or failed; fetching origin/main for fallback..." + git fetch origin main --depth=1 || true + CHANGED=$(git diff --name-only origin/main...HEAD 2>/dev/null || echo "") + echo "Changed files (main fallback):\n$CHANGED" + fi + + if [ -z "$CHANGED" ]; then + echo "Still empty; falling back to diffing last 10 commits from HEAD..." + CHANGED=$(git diff --name-only HEAD~10...HEAD 2>/dev/null || echo "") + echo "Changed files (HEAD~10 fallback):\n$CHANGED" + fi + if echo "$CHANGED" | grep -q '^frontend/'; then echo "frontend_changed=true" >> $GITHUB_OUTPUT else