add git-lfs
This commit is contained in:
parent
838eef92c4
commit
dd6b0a279d
BIN
slides/lfs/inferno.png
Normal file
BIN
slides/lfs/inferno.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 238 KiB |
101
slides/lfs/lfs.md
Normal file
101
slides/lfs/lfs.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# 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)
|
Loading…
Reference in New Issue
Block a user