add git-lfs
This commit is contained in:
		
							
								
								
									
										
											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 | ||||
|  | ||||
|  | ||||
|  | ||||
| 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) | ||||
		Reference in New Issue
	
	Block a user