@@ -2,7 +2,11 @@ name: Markdown
22
33on :
44 push :
5+ paths :
6+ - " **.md"
57 pull_request :
8+ paths :
9+ - " **.md"
610
711permissions :
812 contents : read
@@ -17,28 +21,35 @@ jobs:
1721 - name : Checkout Repo
1822 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
1923 with :
20- fetch-depth : 0
24+ # Shallow clone, but enough for `git diff HEAD~1 HEAD`.
25+ fetch-depth : 2
2126 persist-credentials : false
2227 - name : Get changed files
2328 id : changes
2429 env :
25- PR_HEAD_SHA : ${{ github.event.pull_request.head.sha || github.sha }}
30+ EVENT_NAME : ${{ github.event_name }}
31+ BASE_SHA : ${{ github.event.pull_request.base.sha || '' }}
32+ HEAD_SHA : ${{ github.event.pull_request.head.sha || '' }}
2633 shell : bash
2734 run : |
28- echo "PR_HEAD_SHA=$PR_HEAD_SHA "
35+ echo "Detecting changed markdown files... "
2936
30- base="$(git merge-base origin/main $PR_HEAD_SHA)"
31- echo "BASE_REF=$base"
37+ if [[ "$EVENT_NAME" == "pull_request" ]]; then
38+ echo "Running in pull_request context"
39+ echo "Base SHA: $BASE_SHA"
40+ echo "Head SHA: $HEAD_SHA"
41+ CHANGED=$(git diff --name-only "$BASE_SHA" "$HEAD_SHA" | grep '\.md$' || true)
42+ elif [[ "$EVENT_NAME" == "push" ]]; then
43+ echo "Running in push context"
44+ CHANGED=$(git diff --name-only HEAD~1 HEAD | grep '\.md$' || true)
45+ else
46+ echo "Unsupported event type: $EVENT_NAME"
47+ exit 1
48+ fi
3249
33- changed="$(git diff --name-only --diff-filter=ACMRTUXB $base $PR_HEAD_SHA | grep -v '^vendor/')"
34- echo "CHANGED=$changed"
35-
36- filtered="$(grep '.md$' <<<"$changed" || true)"
37- echo "filtered=$filtered"
38-
39- md="$(echo $filtered | xargs -d '\n' echo)"
40- echo "md=$md"
41- echo "md=$md" >> $GITHUB_OUTPUT
50+ MD=$(echo "$CHANGED" | tr '\n' ' ' | xargs)
51+ echo "Markdown files changed: $MD"
52+ echo "md=$MD" >> "$GITHUB_OUTPUT"
4253
4354 lint :
4455 name : lint markdown files
0 commit comments