112 quotes & text
72 URLs & citations 72 ¡code{:;} ¡
36 credits
1920x1080
112 quotes & text 1920x1080 72 URLs & citations 72 - - PowerPoint PPT Presentation
112 quotes & text 1920x1080 72 URLs & citations 72 code{:;} 36 credits Growing Pains Software Repositories at SCALE Do you put all of your bits in a single gigantic repository or many smaller ones? Why are we even asking?
72 URLs & citations 72 ¡code{:;} ¡
36 credits
1920x1080
Software Repositories at SCALE
1999
2000
2005
2002
2003
2003
2005
2005
2005
2002
2003
2002
2007
1999
2000
2005
2005
2000
Distributed Centralized
SCM db Workspace Workspace Workspace Workspace Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspaceyou can’t test changes in isolation.
‘committing’ and ‘publishing’ code.
where your source is.
permissions on the server.
Advantages Disadvantages
SCM db Workspace Workspace Workspace Workspace Workspacespace since they include the full history.
sandbox.
Advantages Disadvantages
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspaceversion.
to develop a feature?
unmaintained? Obsolete? Can be removed?
it?
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
merge test
Binary Files Security Large Source Bases
Binary Files Large Source Bases Security
changes.
Solution: Make them act more like centralized systems! Replace binary files in history with pointers. And store the contents in a server (or many). If someone wants an old copy, it’s fetched on demand. BitKeeper BAM Git LFS Mercurial LFE
Binary Files Security Large Source Bases
→ All or nothing.
→ Access at a repository level.
→ Anyone can commit, don’t let them push!
Binary Files Security Large Source Bases
Number of Files 0K 350K 700K 1.050K 1.400K Number of Commits 1,25M 2,5M 3,75M 5M
4M (bk) 7.656M Facebook (git) 9.500M Android (repo) 14.362M 1M (bk) 2.696M Linux (git) 599M FreeBSD Ports (SVN) 238M FreeBSD Src (SVN) 896M
Number of Files 0M 250M 500M 750M 1.000M Number of Commits 10M 20M 30M 40M
All Combined 0,08T Google 86T
Library API
Library API
server.git webapp.git restapi.git app.git macApp.git droid.git WinApp.git libglue.git
SCM.
Mono vs Multi? How about a Hybrid?
Solution: Stitch together multiple repositories into one.
Repository Submodule
e46fe3df01435bf523d2ab4f2755556c0e4e6f78 /submodule/path/in/repo .gitmodules http://some_server/submodule
Repository Submodule
Repository Submodule
http://some_server/submodule
Submodule
clone
Repository Submodule
Repository
http://some_server/submodule
Submodule
clone
Submodule
clone
Repository Submodule
http://some_server/submodule
Submodule Repository Submodule
push push
Repository Submodule
http://some_server/submodule
Submodule Repository Submodule
sync
fatal: ¡reference ¡isn’t ¡a ¡tree: ¡6c…e0 ¡ Unable ¡to ¡checkout ¡'6c…e0' ¡in ¡submodule ¡path ¡'sub' Means Someone forgot to push the submodule ‘sub’.
submodule ¡$ ¡git ¡push ¡ Everything ¡up-‑to-‑date Means You made a commit in the submodule while it was in a detached head state (the default). You will cause the problem outlined in the previous slide.
CVS
ChangeSets bind changes to independent files together.
SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace
Clone
SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace
Pull
SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace
Push
SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace
Clone
SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace
Detach
SCM db Workspace
SCM db Workspace
Product Components
SCM db Workspace SCM db Workspace SCM db Workspace
Port
SCM db Workspace
boundaries.
number of components.
partners.
Multirepo
(files move around).
matter.
most of it. No natural boundaries.
Monorepo
monorepo.
from multirepo.
still work within overall structure.
Hybrid
Ahhh, people ask me questions, lost in confusion Well, I tell them there’s no problem,