# The Horrifying Cost If a Git has 2806 commits, and you commit 15MB worth of output each time, then you are a menace and must be stopped. ```text 2806 commits x 15MB = 41GB ``` # Initial Tactics: `.gitignore` ``` *.pdf *.epub Makefile *.xcf ``` ...but sometimes it's not enough. # Saving Your Immortal Soul ![Well deserved fate](slides/lfs/inferno.png) End the madness with git lfs. # Setup ```bash apt install -y git-lfs cd $PROJECT git lfs install ``` ## Output: Easy Hooks ```bash cat ~/.git/hooks/pre-push ``` ``` #!/bin/sh command -v git-lfs >/dev/null 2>&1 || { echo >&2 "This repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting '.git/hooks/pre-push'."; exit 2; } git lfs pre-push "$@" ``` # Add Files Track all the files: ```bash git lfs track "*.iso" git lfs track "*.png" git lfs track "*.jpg" git lfs track "*.jpeg" git lfs track "*.tiff" git lfs track "*.xlsx" git lfs track "*.docx" cat .gitattributes ``` Result: ``` *.jpg filter=lfs diff=lfs merge=lfs -text *.svg filter=lfs diff=lfs merge=lfs -text ``` Double check with `git lfs ls-files`. # Locking [ If your remote supports it ] lock your files when working on them. # Migration Make sure you have all the files: ```bash git lfs fetch origin --all git lfs push $newRemote --all ``` # Problems `soft-serve` does not yet support `git-lfs`. (end list)