Skip to content

CI: check the EN-Revision hash of changed files #1

CI: check the EN-Revision hash of changed files

CI: check the EN-Revision hash of changed files #1

# https://docs.github.com/en/actions
# Checks that the EN-Revision comment of the .xml files changed in a PR points to
# the latest doc-en commit for that file. Emits a ::error annotation and fails if
# the hash is missing, wrong, from another file, or outdated.
name: "Check EN-Revision"
on:
pull_request:
branches: ["master"]
types: [opened, synchronize]
permissions:
contents: read
jobs:
revision:
name: "EN-Revision"
runs-on: ubuntu-latest
steps:
- name: "Checkout translation"
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Checkout php/doc-en"
uses: actions/checkout@v4
with:
path: en
repository: php/doc-en
fetch-depth: 0
- name: "Check EN-Revision"
run: |
BASE="${{ github.event.pull_request.base.sha }}"
git fetch --no-tags --depth=1 origin "$BASE"
fail=0
while IFS= read -r f; do
[ -f "$f" ] && [ -f "en/$f" ] || continue
declared=$(grep -oiP 'EN-Revision:\s*\K[0-9a-f]+' "$f" | head -1 || true)
latest=$(git -C en log -1 --format=%H -- "$f")
if [ "$declared" != "$latest" ]; then
echo "::error file=$f::EN-Revision ${declared:-missing} != latest doc-en commit $latest"
fail=1
fi
done < <(git diff --name-only "$BASE"...HEAD -- '*.xml')
exit $fail