54
@kannonboy Photo: Le Monde en Vidéo @kannonboy

Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboyPhoto: Le Monde en Vidéo

@kannonboy

Page 2: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy@kannonboyPhoto: Le Monde en Vidéo

Page 3: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

Git LFS!

Git LOB!

@kannonboyPhoto: Le Monde en Vidéo

Page 4: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

ok cool

@kannonboyPhoto: Le Monde en Vidéo

Git LFS!

Page 5: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

TIM PETTERSEN • SENIOR DEVELOPER • ATLASSIAN • @KANNONBOY

Practical workflows with Git LFS

Page 6: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

G I T L F S

T H E P R O B L E M W I T H B I G F I L E S

T I P S F O R T E A M S

Agenda

C O N V E R T I N G Y O U R R E P O

Page 7: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

data model

Page 8: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

master

feature/JIRA-123

Page 9: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

434bb..tree

bab1e..parent

Tim P <kannonboy@…> 1455209277 -0800committer

Tim P <kannonboy@…> 1455209277 -0800author

My life is my commit message.

98ca9..

bab1e..

fad3d.. git cat-file -p 98ca9$

Page 10: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

git cat-file -p 434bb$

434bb..

98ca9..

bab1e..

fad3d..

ace23..100644 blob .gitignoredbdbd..100644 blob README.mda0bc3..040000 tree app33d33..040000 tree configb1de7..100755 blob deploy-prod.sh7011e..100755 blob deploy-staging.sh

typefilemode SHA-1

Page 11: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

434bb..

98ca9..

bab1e..

fad3d..

ace23.. 1010101

dbdbd..

a0bc3..

33d33..

b1de7..

7011e..

1010101

1010101

1010101

master

1010101

1010101

1010101

Page 12: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

98ca9..

bab1e..

fad3d..

Page 13: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

98ca9..

bab1e..

fad3d..

Page 14: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

dabad..

98ca9..

bab1e..

fad3d..

86753..

434bb..

50mb100mb150mb

Page 15: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

Page 16: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

(Large File Storage)

Git LFS

Page 17: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

dabad..

98ca9..

bab1e..

fad3d..

86753..

434bb..

$

LFS store

Git host

Page 18: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

dabad..

98ca9..

bab1e..

fad3d..

86753..

434bb..

Git host

LFS store

git push$

Page 19: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

dabad..

98ca9..

bab1e..

fad3d..

86753..

434bb..

git pull$

LFS store

Git host

Page 20: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

dabad..

98ca9..

bab1e..

fad3d..

86753..

434bb..☞

dabad..

98ca9..

bab1e..

fad3d..

86753..

434bb..

https://git-lfs.github.com/spec/v1version

sha256:325ddfb…oid

29342295size

git cat-file -p 4749d$

4749d..

bdd12..

778aa..

Page 21: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ brew install git-lfs

$ git lfs install

Page 22: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ cat ~/.gitconfig

[filter "lfs"] clean = git-lfs clean %f smudge = git-lfs smudge %f required = true

Page 23: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git lfs track “*.mp4”

$ cat .gitattributes

*.mp4 filter=lfs diff=lfs merge=lfs -text

Page 24: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

massive_video.mp4

Work tree

dev

.git/lfs/objects

Clean filter(git-lfs clean)

Index

massive_video.mp4

$

.git/objects

git add

Page 25: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$

dev

.git/lfs/objects

Smudge filter(git-lfs smudge)

Work tree

massive_video.mp4

Commit tree

massive_video.mp4.git/objects

LFS Store

git checkout

Page 26: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ cat ~/.gitconfig

[filter "lfs"] clean = git-lfs clean %f smudge = git-lfs smudge %f required = true

Page 27: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

.git/lfs/objects

.git/objectsHosted repo

LFS store

git push / pull

Page 28: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ ls .git/hooks/

commit-msg.sample post-update.sample pre-commit.sample pre-push ...

Page 29: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git push

Git LFS: (12 of 13 files, 1 skipped) 168.75 MB / 180.87 MB, 12.12 skipped

Counting objects: 22, done. ...

Page 30: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git pull

remote: Counting objects: 3, done. ... Downloading massive_video.mp4 (38.79 MB) ... 1 file changed, 2 insertions(+)

Page 31: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git clone ssh://git@bitbucke..

Cloning into ‘big_repo’ ... Downloading massive_video.mp4 (38.79 MB) ... Checking out files: 100% (13/13), done.

Page 32: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

Converting to Git LFS

Page 33: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

434bb..

fad3d..

98ca9..

41222..

dabad.. 100mb150mb

ace34..☞ 150mb!?!?

Page 34: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

git filter-branch

$ git filter-branch --force --index-filter \ 'git rm --cached --ignore-unmatch big_video.mp4’ \ --prune-empty --tag-name-filter cat -- --all

DON’T DO

THIS!

Page 35: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git filter—branch --prune-empty --tree-filter ' git config -f .gitconfig lfs.url “https://bitbucket.example.com/team/repo.git” git lfs track "*.mp4" git add .gitattributes .gitconfig

for file in $(git ls-files | xargs git check-attr filter | grep "filter: lfs" | sed -r "s/(.*): filter: lfs/\1/"); do git rm -f --cached ${file} git add ${file} done' --tag-name-filter cat -- --all

@kannonboy

DON’T DO

THIS

EITHER!

Page 36: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

BFG Repo-Cleaner

@kannonboy

Page 37: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

BFG Repo-Cleaner

@kannonboy

10-720x faster than filter-branch

built to kill history

Git LFS support

Page 38: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git filter—branch --prune-empty --tree-filter ' git config -f .gitconfig lfs.url “https://bitbucket.example.com/team/repo.git” git lfs track "*.mp4" git add .gitattributes .gitconfig

for file in $(git ls-files | xargs git check-attr filter | grep "filter: lfs" | sed -r "s/(.*): filter: lfs/\1/"); do git rm -f --cached ${file} git add ${file} done' --tag-name-filter cat -- --all

@kannonboy

DON’T DO

THIS

EITHER!

Page 39: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ brew install bfg

$ bfg —-convert-to-git-lfs ‘*.{zip,mp4}’ --no-blob-protection

Page 40: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

Enable in Bitbucket

Page 41: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

Tips for teams

Page 42: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboyBeware merge conflicts @kannonboy

Page 43: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

…meanwhile in

Page 44: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

…meanwhile in

Page 45: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboyTeamwork @kannonboyTeamwork

Page 46: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

$ git lfs fetch --recent

$ git config lfs.fetchrecentalways “true”

lfs.fetchrecentrefsdays

lfs.fetchrecentremoterefs

lfs.fetchrecentcommitsdays

(default = 7)

(default = 0)

Page 47: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboyFetch the bare necessitiesFetch the bare necessities @kannonboy

Page 48: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

# for a build that just runs the unit tests $ git config lfs.fetchexclude Assets/**

# for an audio engineer $ git config lfs.fetchinclude Assets/Audio/**

Page 49: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboyGUI tools @kannonboy

Page 50: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

1. Install EGit Team Provider version 4.2+ 2. Make sure git-lfs is on your path

Page 51: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

SourceTree

Page 52: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy

coming soon!Bitbucket Cloud

git-lfs.github.comdocs

github.com/github/git-lfssource

atlassian.com/bitbucketBitbucket Server

Lookingfor

more?

Page 53: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

@kannonboy@kannonboy

Page 54: Photo: Le Monde en Vidéo · Practical workflows with Git LFS. @kannonboy GIT LFS THE PROBLEM WITH BIG FILES TIPS FOR TEAMS Agenda CONVERTING YOUR REPO. @kannonboy data model. @kannonboy

Thank you!

TIM PETTERSEN • SENIOR DEVELOPER • ATLASSIAN • @KANNONBOY