News from Git in Eclipse
Matthias Sohn (SAP)
News from Git in Eclipse Matthias Sohn (SAP) merge strategy - - PowerPoint PPT Presentation
News from Git in Eclipse Matthias Sohn (SAP) merge strategy extension point enables external merge strategy used by EMF Compare to provide model merge (Neon) JGit 4.0, EGit 4.1 EMF Compare provides model merge strategy Computes
Matthias Sohn (SAP)
merge strategy extension point
JGit 4.0, EGit 4.1
provide model merge (Neon)
EMF Compare provides model merge strategy
Computes the logical model for each version Compares / merges complete logical model
e4 smart project import wizard
EGit
types
wiki e4 smart import
e4 smart project import
Staging View
EGit
files (4.2)
Better support non-workspace files
Sorting files by status
"Commit" opens Staging View
Auto-switch to vertical layout
History View
EGit
Auto-select branch
New search widget
Usability Improvements
EGit
working sets
dirty decorator in repositories view
enable most git actions on working sets
configure date format
View Stash in Commit Viewer
Gerrit integration
EGit 4.3
Gerrit
clipboard
Gerrit" wizard
Misc Improvements
EGit
nested repositories (4.3)
modifying the workspace (4.5)
hooks support
JGit
.gitattributes
JGit 4.3
fixed most wanted JGit bug (108 votes)
LFS Large File Storage
JGit, EGit
client
server
○ file system or S3 storage
Versioning large binaries in Git
large binary files can't be packed by Git efficiently ➔ Git repository growing quickly ➔ gc more expensive and less efficient ➔ slows down transport ➔ Git server load grows
.gitattributes slides.pdf X.java
Large File Storage (LFS) extension
.git
git server lfs server git git-lfs
.gitattributes slides.pdf X.java
LFS configuration
.gitattributes *.pdf filter=lfs diff=lfs merge=lfs -text .gitconfig [filter "lfs"] clean = git-lfs clean %f smudge = git-lfs smudge %f which files to store in LFS ? lfs clean filter intercepts add lfs smudge filter intercepts checkout .git
.gitattributes slides.pdf X.java
git add slides.pdf
version git-lfs/spec/v1 id sha256:5891b5b522... size 6 store meta data in objects store big file in lfs objects lfs clean filter slides.pdf .git
.gitattributes slides.pdf X.java
git push origin
git server lfs server pre-push hook version git-lfs/spec/v1 id sha256:5891b5b522... size 6 push slides.pdf .git
.gitattributes slides.pdf X.java
git fetch/clone, git checkout
git server lfs server version git-lfs/spec/v1 id sha256:5891b5b522... size 6 fetch checkout downloads large
slides.pdf lfs smudge filter .git
EGit Gerrit .gitattributes slides.pdf X.java
LFS server with JGit filesystem/S3 storage
JGit JGit LFS client Gerrit plugin LFS storage (filesystem / S3) .git
JGit LFS server .git
The quest for distributed JGit
JGit
RefTree (4.2)
commit containing ref updates
Ketch (4.3)
RefTree
election
RefTree: Versioning branches in git
store refs in git tree objects push can update many refs -> stored in one RefTree commit
jgit clone with worktree standard refs jgit.git bare repository refs stored in RefTree bootstrap branch symlinked
commit, push bootstrap branch bootstrap branch RefTree Versions symlink
alternates
spy empty, used for introspection
Ketch: multi-master git repository
leader
Ketch: multi-master git repository
push leader
Ketch: multi-master git repository
describing target state
push queue proposal
RefTree
leader
Ketch: multi-master git repository
describing target state
to majority of servers
push queue proposal
RefTree RefTree
leader
Ketch: multi-master git repository
describing target state
to majority of servers
push queue proposal
RefTree RefTree RefTree
leader
Ketch: multi-master git repository
describing target state
to majority of servers
ack ack
RefTree RefTree RefTree
leader
Evaluate the Sessions Sign in and vote at eclipsecon.org