From f2aeabff78c6735d61b7e70f16f01556cc606d96 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 23 Dec 2022 14:22:43 +0100 Subject: [PATCH] Setup git lfs --- .gitattributes | 1 + .github/workflows/validate-lfs.yml | 15 +++++++++++++++ tools/git/validate_lfs.sh | 29 +++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 .gitattributes create mode 100644 .github/workflows/validate-lfs.yml create mode 100755 tools/git/validate_lfs.sh diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..0542767eff --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +**/snapshots/**/*.png 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 0000000000..417b95ce2c --- /dev/null +++ b/.github/workflows/validate-lfs.yml @@ -0,0 +1,15 @@ +name: Validate Git LFS + +on: [pull_request] + +jobs: + build: + runs-on: ubuntu-latest + name: Validate + steps: + - uses: actions/checkout@v3 + with: + lfs: 'true' + + - run: | + ./tools/git/validate_lfs.sh diff --git a/tools/git/validate_lfs.sh b/tools/git/validate_lfs.sh new file mode 100755 index 0000000000..ce121057b6 --- /dev/null +++ b/tools/git/validate_lfs.sh @@ -0,0 +1,29 @@ +#! /bin/bash + +# +# Copyright (c) 2022 New Vector Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Based on https://cashapp.github.io/paparazzi/#git-lfs + +# Compare the output of `git ls-files ':(attr:filter=lfs)'` against `git lfs ls-files` +# If there's no diff we assume the files have been committed using git lfs +diff <(git ls-files ':(attr:filter=lfs)' | sort) <(git lfs ls-files -n | sort) >/dev/null + +ret=$? +if [[ $ret -ne 0 ]]; then + echo >&2 "Detected files committed without using Git LFS." + echo >&2 "Install git lfs (eg brew install git-lfs) and run 'git lfs install --local' within the root repository directory and re-commit your files." + exit 1 +fi