From 64d86cc95c24770d8bdfca6d077f815fc61013cc Mon Sep 17 00:00:00 2001 From: nasbench Date: Mon, 10 Aug 2026 17:06:56 +0200 Subject: [PATCH 1/7] add lfs check --- .gitattributes | 2 +- .github/workflows/validate-lfs.yml | 61 ++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/validate-lfs.yml diff --git a/.gitattributes b/.gitattributes index 1443a1df5..13476ae97 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,4 @@ -*.log filter=lfs diff=lfs merge=lfs -text *.log text encoding=utf-8 datasets/**/*.json filter=lfs diff=lfs merge=lfs -text +datasets/**/*.log filter=lfs diff=lfs merge=lfs -text datasets/**/*.ndjson filter=lfs diff=lfs merge=lfs -text diff --git a/.github/workflows/validate-lfs.yml b/.github/workflows/validate-lfs.yml new file mode 100644 index 000000000..044f6d7bc --- /dev/null +++ b/.github/workflows/validate-lfs.yml @@ -0,0 +1,61 @@ +name: Validate LFS Files + +on: + pull_request: + branches: [master] + types: [opened, synchronize, reopened] + paths: + - 'datasets/**/*.log' + - 'datasets/**/*.json' + - 'datasets/**/*.ndjson' + +permissions: + contents: read + +jobs: + validate-lfs-files: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + fetch-depth: 0 + lfs: 'false' + + - name: Verify Git LFS is available + run: git lfs version + + - name: Validate changed LFS files + shell: bash + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + run: | + set -euo pipefail + + mapfile -t files < <( + git diff --name-only --diff-filter=ACMRT "$BASE_SHA" "$HEAD_SHA" -- \ + 'datasets/**/*.log' 'datasets/**/*.json' 'datasets/**/*.ndjson' + ) + + if (( ${#files[@]} == 0 )); then + echo "No changed .log, .json, or .ndjson files to validate." + exit 0 + fi + + failures=0 + + for file in "${files[@]}"; do + if git cat-file blob "HEAD:${file}" | git lfs pointer --check --strict --stdin >/dev/null; then + echo "LFS OK: ${file}" + else + echo "::error file=${file}::File is not stored in Git LFS." + failures=1 + fi + done + + if (( failures != 0 )); then + echo "One or more changed .log, .json, or .ndjson files are not stored with Git LFS." + exit 1 + fi From e151e7ec4814065a3db1e6252363841e6c6deb33 Mon Sep 17 00:00:00 2001 From: nasbench Date: Mon, 10 Aug 2026 17:09:26 +0200 Subject: [PATCH 2/7] example log to fail --- datasets/example.log | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 datasets/example.log diff --git a/datasets/example.log b/datasets/example.log new file mode 100644 index 000000000..0a706d97b --- /dev/null +++ b/datasets/example.log @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 +size 4 From c62b01001ed54a3e838fe6975be69c693d10d523 Mon Sep 17 00:00:00 2001 From: Nasreddine Bencherchali Date: Mon, 10 Aug 2026 17:14:53 +0200 Subject: [PATCH 3/7] Update example.log --- datasets/example.log | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/datasets/example.log b/datasets/example.log index 0a706d97b..b189b4a83 100644 --- a/datasets/example.log +++ b/datasets/example.log @@ -1,3 +1 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 -size 4 +fake file From 3790a39d31d0a861a4684db67831eafc400ff053 Mon Sep 17 00:00:00 2001 From: nasbench Date: Mon, 10 Aug 2026 17:18:55 +0200 Subject: [PATCH 4/7] Test LFS validation failure --- .github/workflows/validate-lfs.yml | 4 ++-- datasets/example.log | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate-lfs.yml b/.github/workflows/validate-lfs.yml index 044f6d7bc..82fef9f5a 100644 --- a/.github/workflows/validate-lfs.yml +++ b/.github/workflows/validate-lfs.yml @@ -35,8 +35,8 @@ jobs: set -euo pipefail mapfile -t files < <( - git diff --name-only --diff-filter=ACMRT "$BASE_SHA" "$HEAD_SHA" -- \ - 'datasets/**/*.log' 'datasets/**/*.json' 'datasets/**/*.ndjson' + git diff --name-only --diff-filter=ACMRT "$BASE_SHA" "$HEAD_SHA" | + awk '/^datasets\/.*\.(log|json|ndjson)$/ { print }' ) if (( ${#files[@]} == 0 )); then diff --git a/datasets/example.log b/datasets/example.log index b189b4a83..95e5668dd 100644 --- a/datasets/example.log +++ b/datasets/example.log @@ -1 +1 @@ -fake file +fake file again From c7ccee2e0cce0e7fd8b3e3600564113246f44ebe Mon Sep 17 00:00:00 2001 From: nasbench Date: Mon, 10 Aug 2026 17:21:05 +0200 Subject: [PATCH 5/7] List files failing LFS validation --- .github/workflows/validate-lfs.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate-lfs.yml b/.github/workflows/validate-lfs.yml index 82fef9f5a..f244617ea 100644 --- a/.github/workflows/validate-lfs.yml +++ b/.github/workflows/validate-lfs.yml @@ -44,18 +44,27 @@ jobs: exit 0 fi - failures=0 + failed_files=() for file in "${files[@]}"; do if git cat-file blob "HEAD:${file}" | git lfs pointer --check --strict --stdin >/dev/null; then echo "LFS OK: ${file}" else echo "::error file=${file}::File is not stored in Git LFS." - failures=1 + failed_files+=("$file") fi done - if (( failures != 0 )); then + if (( ${#failed_files[@]} != 0 )); then echo "One or more changed .log, .json, or .ndjson files are not stored with Git LFS." + echo "Failed files:" + printf ' - %s\n' "${failed_files[@]}" + + { + echo "### Files not stored with Git LFS" + echo + printf -- '- `%s`\n' "${failed_files[@]}" + } >> "$GITHUB_STEP_SUMMARY" + exit 1 fi From d9e2e98500ea16519bf1ba2c16aa878a0d78714f Mon Sep 17 00:00:00 2001 From: nasbench Date: Mon, 10 Aug 2026 17:22:28 +0200 Subject: [PATCH 6/7] delete files --- datasets/example.log | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/datasets/example.log b/datasets/example.log index 95e5668dd..62c7b4799 100644 --- a/datasets/example.log +++ b/datasets/example.log @@ -1 +1,3 @@ -fake file again +version https://git-lfs.github.com/spec/v1 +oid sha256:b02a25b2a8fe54fdd13bb011df064770a8143bd0ad288ce918626d82c08e603b +size 16 From c9f7831a3ad543fac3e046ba12c241753b7f9700 Mon Sep 17 00:00:00 2001 From: Nasreddine Bencherchali Date: Mon, 10 Aug 2026 17:22:59 +0200 Subject: [PATCH 7/7] Delete datasets/example.log --- datasets/example.log | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 datasets/example.log diff --git a/datasets/example.log b/datasets/example.log deleted file mode 100644 index 62c7b4799..000000000 --- a/datasets/example.log +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b02a25b2a8fe54fdd13bb011df064770a8143bd0ad288ce918626d82c08e603b -size 16