mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
Nothing stops the inconsistency the previous commit cleaned up from coming straight back. The game reads its data through FileMan, which hands every path to VFS, and VFS compares paths case-insensitively (vfs::Path::Less -> vfs::String::less). A file added under Data/Mercedt/ therefore works perfectly well beside Data/MercEdt/ right up until a release is assembled on a case-sensitive filesystem and both of them survive into the archive, at which point the game serves whichever the directory yields first. Directories count as much as files: a translated-only file below Data/Mercedt/ collides with Data/MercEdt/ even when no file does, so each overlay is merged onto gamedir the way a release does and every path prefix is compared. Runs on pull requests only, and in its own workflow rather than in build.yml, which release.yml also calls: a check has no business running again while a release is assembled. It reads the git index rather than the files, so a blobless sparse checkout is enough and no game data is fetched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
27 lines
1.0 KiB
YAML
27 lines
1.0 KiB
YAML
name: checks
|
|
|
|
# Repository checks that answer pass or fail and build nothing. Deliberately
|
|
# not part of build.yml: that workflow is also what release.yml calls, and a
|
|
# check has no business running again while a release is being assembled.
|
|
on:
|
|
pull_request:
|
|
|
|
jobs:
|
|
# VFS resolves paths case-insensitively, so two data files whose names differ
|
|
# only in case are one file to the game, and which of them wins is down to the
|
|
# order the directory happened to be read in. NTFS made that unrepresentable;
|
|
# a Linux checkout and a release assembled on Linux can both hold it, and it
|
|
# goes wrong quietly, so it is checked rather than discovered.
|
|
data_case:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
# the check reads the index, not the files, so no blob has to be fetched
|
|
- name: Checkout source
|
|
uses: actions/checkout@v7
|
|
with:
|
|
filter: 'blob:none'
|
|
sparse-checkout: .github/scripts
|
|
|
|
- name: Check game data for paths that differ only in case
|
|
run: python3 .github/scripts/check-data-case.py
|