SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
@kannonboy
Photo: Le Monde en Vidéo
@kannonboy
@kannonboy@kannonboy
Photo: Le Monde en Vidéo
@kannonboy
Git LFS!
Git LOB!
@kannonboy
Photo: Le Monde en Vidéo
@kannonboy
ok cool
@kannonboy
Photo: Le Monde en Vidéo
Git LFS!
TIM PETTERSEN • SENIOR DEVELOPER • ATLASSIAN • @KANNONBOY
Tracking huge files with
Git LFS
@kannonboy
GIT LFS
THE PROBLEM WITH BIG FILES
TIPS FOR TEAMS
Agenda
CONVERTING YOUR REPO
@kannonboy
data model
@kannonboy
master
feature/JIRA-123
@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$
@kannonboy
git cat-file -p 434bb$
434bb..
98ca9..
bab1e..
fad3d..
ace23..100644 blob .gitignore
dbdbd..100644 blob README.md
a0bc3..040000 tree app
33d33..040000 tree config
b1de7..100755 blob deploy-prod.sh
7011e..100755 blob deploy-staging.sh
typefilemode SHA-1
@kannonboy
434bb..
98ca9..
bab1e..
fad3d..
ace23.. 1010101
dbdbd..
a0bc3..
33d33..
b1de7..
7011e..
1010101
1010101
1010101
master
1010101
1010101
1010101
@kannonboy
98ca9..
bab1e..
fad3d..
@kannonboy
98ca9..
bab1e..
fad3d..
@kannonboy
dabad..
98ca9..
bab1e..
fad3d..
86753..
434bb..
50mb
100mb
150mb
@kannonboy
@kannonboy
(Large File Storage)
Git LFS
@kannonboy
dabad..
98ca9..
bab1e..
fad3d..
86753..
434bb..
$
LFS store
Git host
@kannonboy
☞
☞
☞
dabad..
98ca9..
bab1e..
fad3d..
86753..
434bb..
Git host
LFS store
git push$
@kannonboy
☞
☞
☞
dabad..
98ca9..
bab1e..
fad3d..
86753..
434bb..
git pull$
LFS store
Git host
@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..
@kannonboy
$ brew install git-lfs
$ git lfs install
@kannonboy
$ cat ~/.gitconfig
[filter "lfs"]
clean = git-lfs clean %f
smudge = git-lfs smudge %f
required = true
@kannonboy
$ git lfs track “*.mp4”
$ cat .gitattributes
*.mp4 filter=lfs diff=lfs merge=lfs -text
@kannonboy
massive_video.mp4
Work tree
dev
.git/lfs/objects
Clean filter
(git-lfs clean)
☞
Index
massive_video.mp4
$
.git/objects
git add
@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
@kannonboy
.git/lfs/objects
.git/objects
Hosted repo
LFS store
git push / pull
@kannonboy
$ ls .git/hooks/
commit-msg.sample
post-update.sample
pre-commit.sample
pre-push
...
@kannonboy
$ git push
Git LFS: (12 of 13 files, 1 skipped)
168.75 MB / 180.87 MB, 12.12 skipped
Counting objects: 22, done.
...
@kannonboy
$ git pull
remote: Counting objects: 3, done.
...
Downloading massive_video.mp4 (38.79 MB)
...
1 file changed, 2 insertions(+)
@kannonboy
$ git clone ssh://git@bitbucke..
Cloning into ‘big_repo’
...
Downloading massive_video.mp4 (38.79 MB)
...
Checking out files: 100% (13/13), done.
@kannonboy
Auth
SSH / HTTP
HTTP ONLY
Git server with
embedded LFS
Store
@kannonboy
Auth
SSH / HTTP
HTTP ONLY
Git server
Separate LFS store
(e.g. S3)
@kannonboy
LFS aware Git server LFS storeDev
git clone https://..
repo pack files
smudge
filter
cafebabe is over there
I need object cafebabe
GET …/cafebabe
object cafebabe…
@kannonboy
POST .../repo.git
I need object cafebabe
@kannonboy
/info/lfs/objects/batch
{“objects”:[
{
“oid”: “cafebabe...”,
“size”: 40689401
}, ...
],
“operation”: “download”}
@kannonboy
200 OK
{“objects”:[
{“oid”: “cafebabe…”, “size”: 40689401,
“actions”: {
“download”: {
“href”: “https://…/lfs/cafebabe…”,
@kannonboy
cafebabe is over there
“header”: {
“Authorization”: “JWT eyJ0eXA…”,
}
}
}
...
@kannonboy
LFS aware Git server LFS storeDev
git push
please upload it over there
I want to upload cafebabe
POST …/cafebabe
I uploaded cafebabe
@kannonboy
200 OK
{“objects”:[ ...
“actions”: {
“upload”: {
“href”: “https://…/lfs/cafebabe…”,
…
}
@kannonboy
, “verify”: {
“href”: “https://…/lfs/callback”,
…
}
}
...
go upload it over there
I uploaded cafebabe
@kannonboy
LFS aware Git server LFS storeDev
git push ssh://…
please upload it over there
I want to upload cafebabe
POST …/cafebabe
I uploaded cafebabe
where is the LFS API?
the LFS API is over there
@kannonboy
$ ssh git@bitbucket git-lfs-authenticate 
project/repo.git download
{
“href”: “https://…/lfs/objects/batch”,
“header”: {
“Authorization”: “JWT eyJ0eXA...”
}
}
where is the LFS API?
the LFS API is over there
@kannonboy
@kannonboy
LFS aware Git server LFS storeDev
git clone https://..
repo data
POST /info/lfs/objects/batch
LFS objects hypermedia
GET …/<objectSHA>
smudge
filter
happens
once per
file checked
out
@kannonboy
LFS storeDev
git lfs clone https://..
repo data
GET …/<objectSHA>
batched
smudge
filter
subtle difference!
POST /info/lfs/objects/batch
LFS objects hypermedia
LFS aware Git server
@kannonboy
Converting to Git LFS
☞
@kannonboy
434bb..
fad3d..
98ca9..
41222..
dabad..
100mb
150mb
ace34..
☞ 150mb!?!?
@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!
@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!
@kannonboy
BFG Repo-Cleaner
@kannonboy
by @rtyley
@kannonboy
BFG Repo-Cleaner
@kannonboy
10-720x faster
than filter-branch
built to
kill history
Git LFS
support
by @rtyley
@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!
@kannonboy
$ brew install bfg
$ bfg —-convert-to-git-lfs ‘*.{zip,mp4}’
--no-blob-protection
@kannonboy
Repofactoring
@kannonboy
@kannonboy
Identifying large objects
github.com/bloomberg/repofactor
by @hashpling
@kannonboy
$
a295ef4… 102437 95372
2cc7063… 152171 140443
blob SHA size on disk average blob size
generate-larger-than 50000
Identifying large objects
@kannonboy
a295ef4… 102437 95372
2cc7063… 152171 140443
, PNG, 1148 x 482
, PNG, 1101 x 800
$ generate-larger-than 50000 
| add-file-info
Identifying large objects
@kannonboy
$ generate-larger-than 50000 
| add-file-info
2cc7063… 152171 140443, PNG, 1101 x 800
a295ef4… 102437 95372, PNG, 1148 x 482
order by average blob size

| sort -k3nr
Identifying large objects
@kannonboy
$ generate-larger-than 50000 
| add-file-info 
| sort -k3nr
$ report-on-large-objects big-stuff.txt
logo-hdpi.png 2cc7063… 152171 140443, PNG…
logo-mdpi.png a295ef4… 102437 95372, PNG…
paths
> big-stuff.txt
Identifying large objects
@kannonboy
$ bfg —-convert-to-git-lfs ‘logo-*.png’
--no-blob-protection
Identifying large objects
@kannonboy
Enable in Bitbucket
@kannonboy
@kannonboy
Tips for teams
@kannonboyBeware merge conflicts @kannonboy
@kannonboy
…meanwhile in
@kannonboy
…meanwhile in
@kannonboyTeamwork @kannonboyTeamwork
@kannonboy
$ git lfs fetch
$ git config lfs.fetchrecentalways “true”
master
feature0
feature1
--recent
T-minus 7 days
@kannonboy
$ git config lfs.fetchrecentalways “true”
lfs.fetchrecentrefsdays
lfs.fetchrecentremoterefs
lfs.fetchrecentcommitsdays
(default = 7)
(default = 0)
$ git lfs fetch --recent
@kannonboy
$ git lfs prune
lfs.pruneoffsetdays
lfs.pruneverifyremotealways
(default = 3)
@kannonboyFetch the bare necessitiesFetch the bare necessities @kannonboy
© Disney
@kannonboy
# for a build that just runs the unit tests
$ git lfs fetch --exclude Assets/**
# for an audio engineer
$ git lfs fetch --include Assets/Audio/**
$ git config lfs.fetchexclude Assets/**
$ git config lfs.fetchinclude Assets/Audio/**
@kannonboyIDEs & GUI tools @kannonboy
@kannonboy
@kannonboy
1. Install EGit Team Provider version 4.2+
2. Make sure git-lfs is on your path
@kannonboy
@kannonboy
@kannonboy
SourceTree
@kannonboy
coming soon!
Bitbucket Cloud
git-lfs.github.com
docs
github.com/github/git-lfs
source
atlassian.com/bitbucket
Bitbucket Server
Looking
for
more?
Follow me for occasional Git,
Bitbucket & JIRA trivia

Contenu connexe

Tendances

Eat my data
Eat my dataEat my data
Eat my data
Peng Zuo
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
Mandi Walls
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
ronnywang_tw
 
Baremetal deployment scale
Baremetal deployment scaleBaremetal deployment scale
Baremetal deployment scale
baremetal
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deployment
baremetal
 
Gitting the Most From Git
Gitting the Most From GitGitting the Most From Git
Gitting the Most From Git
Chris Miller
 

Tendances (20)

Eat my data
Eat my dataEat my data
Eat my data
 
CPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANCPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPAN
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCS
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
 
Ninja Git: Save Your Master
Ninja Git: Save Your MasterNinja Git: Save Your Master
Ninja Git: Save Your Master
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
 
Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010
 
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
 
Loading...git
Loading...gitLoading...git
Loading...git
 
GIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APP
 
Baremetal deployment scale
Baremetal deployment scaleBaremetal deployment scale
Baremetal deployment scale
 
Deployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails WorldDeployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails World
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deployment
 
Git, from the beginning
Git, from the beginningGit, from the beginning
Git, from the beginning
 
Gitting the Most From Git
Gitting the Most From GitGitting the Most From Git
Gitting the Most From Git
 
From Promises & async/await to Async Algebraic Data Types
From Promises & async/await to Async Algebraic Data TypesFrom Promises & async/await to Async Algebraic Data Types
From Promises & async/await to Async Algebraic Data Types
 

En vedette

Digitalmarketing2013markettrends 121102073001-phpapp01
Digitalmarketing2013markettrends 121102073001-phpapp01Digitalmarketing2013markettrends 121102073001-phpapp01
Digitalmarketing2013markettrends 121102073001-phpapp01
ashish22in
 
MeerKAT AP1 Info Sheet
MeerKAT AP1 Info SheetMeerKAT AP1 Info Sheet
MeerKAT AP1 Info Sheet
Daleen Postma
 
Slides estatuto do desarmamento
Slides estatuto do desarmamentoSlides estatuto do desarmamento
Slides estatuto do desarmamento
crisdupret
 

En vedette (12)

Réalisations Décoration Emilie Niermans
Réalisations Décoration Emilie NiermansRéalisations Décoration Emilie Niermans
Réalisations Décoration Emilie Niermans
 
Digitalmarketing2013markettrends 121102073001-phpapp01
Digitalmarketing2013markettrends 121102073001-phpapp01Digitalmarketing2013markettrends 121102073001-phpapp01
Digitalmarketing2013markettrends 121102073001-phpapp01
 
Jojo Steel Ball Run Part 7 - Presentation
Jojo Steel Ball Run Part 7 - PresentationJojo Steel Ball Run Part 7 - Presentation
Jojo Steel Ball Run Part 7 - Presentation
 
Presentación1
Presentación1Presentación1
Presentación1
 
MeerKAT AP1 Info Sheet
MeerKAT AP1 Info SheetMeerKAT AP1 Info Sheet
MeerKAT AP1 Info Sheet
 
Ciclo de vida de un proyecto
Ciclo de vida de un proyectoCiclo de vida de un proyecto
Ciclo de vida de un proyecto
 
Countrywide Tech New York
Countrywide Tech New YorkCountrywide Tech New York
Countrywide Tech New York
 
“Conocimiento sobre glaucoma y factores de riesgo que poseen los habitantes d...
“Conocimiento sobre glaucoma y factores de riesgo que poseen los habitantes d...“Conocimiento sobre glaucoma y factores de riesgo que poseen los habitantes d...
“Conocimiento sobre glaucoma y factores de riesgo que poseen los habitantes d...
 
Makapaghihintay Ang Amerika
Makapaghihintay Ang AmerikaMakapaghihintay Ang Amerika
Makapaghihintay Ang Amerika
 
Coinfeccion Tuberculosis VIH
Coinfeccion Tuberculosis VIH Coinfeccion Tuberculosis VIH
Coinfeccion Tuberculosis VIH
 
Finanza & Fisco Operazione Poseidon ANNO 2011
Finanza & Fisco Operazione Poseidon ANNO 2011Finanza & Fisco Operazione Poseidon ANNO 2011
Finanza & Fisco Operazione Poseidon ANNO 2011
 
Slides estatuto do desarmamento
Slides estatuto do desarmamentoSlides estatuto do desarmamento
Slides estatuto do desarmamento
 

Similaire à Tracking huge files with Git LFS (GlueCon 2016)

Хокку про Heroku
Хокку про HerokuХокку про Heroku
Хокку про Heroku
GeeksLab Odessa
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by docker
Wei-Ting Kuo
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
Victor Wong
 

Similaire à Tracking huge files with Git LFS (GlueCon 2016) (20)

Git Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a BossGit Magic: Versioning Files like a Boss
Git Magic: Versioning Files like a Boss
 
Breaking bad habits with GitLab CI
Breaking bad habits with GitLab CIBreaking bad habits with GitLab CI
Breaking bad habits with GitLab CI
 
Хокку про Heroku
Хокку про HerokuХокку про Heroku
Хокку про Heroku
 
Хокку про Heroku
Хокку про HerokuХокку про Heroku
Хокку про Heroku
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutions
 
Git Aliases of the Gods!
Git Aliases of the Gods!Git Aliases of the Gods!
Git Aliases of the Gods!
 
Becoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola PaolucciBecoming a Git Master - Nicola Paolucci
Becoming a Git Master - Nicola Paolucci
 
Becoming a Git Master
Becoming a Git MasterBecoming a Git Master
Becoming a Git Master
 
Parse, scale to millions
Parse, scale to millionsParse, scale to millions
Parse, scale to millions
 
gunicorn introduction
gunicorn introductiongunicorn introduction
gunicorn introduction
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto#5 - Git - Contribuindo com um repositório remoto
#5 - Git - Contribuindo com um repositório remoto
 
Shipping python project by docker
Shipping python project by dockerShipping python project by docker
Shipping python project by docker
 
GTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSourceGTFO: Git Theory For OpenSource
GTFO: Git Theory For OpenSource
 
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
Christian Strappazzon - Presentazione Python Milano - Codemotion Milano 2017
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 
Working with Git
Working with GitWorking with Git
Working with Git
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
 

Dernier

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Dernier (20)

Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 

Tracking huge files with Git LFS (GlueCon 2016)