102 lines
1.4 KiB
Markdown
102 lines
1.4 KiB
Markdown
# 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)
|