From bd8952e1235ed0b7ad706b8aca119221d31052d0 Mon Sep 17 00:00:00 2001 From: Rafael Roquetto Date: Tue, 24 Sep 2024 08:02:36 -0600 Subject: [PATCH] Add workflow for checking git-lfs files (#1194) --- .github/workflows/git-lfs-check.yml | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/git-lfs-check.yml diff --git a/.github/workflows/git-lfs-check.yml b/.github/workflows/git-lfs-check.yml new file mode 100644 index 000000000..08e6e34b1 --- /dev/null +++ b/.github/workflows/git-lfs-check.yml @@ -0,0 +1,40 @@ +name: Check git-lfs files + +on: + push: + branches: [ 'main', 'release-*' ] + pull_request: + branches: [ 'main', 'release-*' ] + +jobs: + git-lfs: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + fetch-depth: 0 + lfs: true + + - name: Check git-lfs files + run: | + + files=$(git diff --name-only origin/main...HEAD | grep '\.o$' || true) + if [ -z "$files" ]; then + echo "No .o files modified" + exit 0 + fi + + for file in $files; do + contents=$(git cat-file -p :$file) + + # Check if the file is binary or an LFS pointer + if [[ $contents == *"version https://git-lfs.github.com/spec/v1"* ]]; then + echo "The file '$file' is correctly tracked by LFS." + elif [[ ! $contents =~ ^[[:print:]]*$ ]]; then + echo "Error: The file '$file' is a binary file and should not be committed directly." + exit 1 + fi + done +