news from git in eclipse - eclipsecon eu - 2016-10-26

41
News from Git in Eclipse Matthias Sohn (SAP)

Upload: msohn

Post on 12-Feb-2017

252 views

Category:

Software


4 download

TRANSCRIPT

Page 1: News from Git in Eclipse - EclipseCon EU - 2016-10-26

News from Git in Eclipse

Matthias Sohn (SAP)

Page 2: News from Git in Eclipse - EclipseCon EU - 2016-10-26

merge strategy extension point

JGit 4.0, EGit 4.1

● enables external merge strategy● used by EMF Compare to

provide model merge (Neon)

Page 3: News from Git in Eclipse - EclipseCon EU - 2016-10-26

EMF Compare provides model merge strategy

Computes the logical model for each version

Compares / merges complete logical model

Page 4: News from Git in Eclipse - EclipseCon EU - 2016-10-26

e4 smartproject import

wizardEGit

● clone repository● invoke e4 smart project import● auto-detects projects and their

types● Since Neon it's the default

wiki e4 smart import

Page 5: News from Git in Eclipse - EclipseCon EU - 2016-10-26

e4 smart project import

Page 6: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Staging ViewEGit

● better support non-workspace files (4.2)

● enable sorting files by status (4.3)● "Commit" opens staging view (4.3)● auto-switch to vertical layout (4.3)

Page 7: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Better support non-workspace files

Page 8: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Sorting files by status

Page 9: News from Git in Eclipse - EclipseCon EU - 2016-10-26

"Commit" opens Staging View

Page 10: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Auto-switch to vertical layout

Page 11: News from Git in Eclipse - EclipseCon EU - 2016-10-26

History ViewEGit

● auto-select branch (4.2)● new search widget (4.5)

Page 12: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Auto-select branch

Page 13: News from Git in Eclipse - EclipseCon EU - 2016-10-26

New search widget

Page 14: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Usability Improvements

EGit

● dirty decorator in repositories view● most git actions enabled on

working sets● configure date format● view stash in commit viewer (4.4)

Page 15: News from Git in Eclipse - EclipseCon EU - 2016-10-26

dirty decorator in repositories view

Page 16: News from Git in Eclipse - EclipseCon EU - 2016-10-26

enable most git actions onworking sets

Page 17: News from Git in Eclipse - EclipseCon EU - 2016-10-26

configure date format

Page 18: News from Git in Eclipse - EclipseCon EU - 2016-10-26

View Stash in Commit Viewer

Page 19: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Gerrit integration

EGit 4.3

● auto-configure repository cloned from Gerrit

● auto-fill "Fetch from Gerrit" wizard from clipboard

● "Commit and push" opens "Push to Gerrit" wizard

● Set topic on push for review (4.4)

Page 20: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Misc Improvements

EGit

● improved support for submodules / nested repositories (4.3)

● configurable pull options (4.3)● rebase modes (4.6)● check for running launches before

modifying the workspace (4.5)● auto-gc (4.6)

● Oomph setup for contributors (4.5)

Page 21: News from Git in Eclipse - EclipseCon EU - 2016-10-26

hookssupport

JGit

● pre-push (4.2)● post-commit (4.5)

Page 22: News from Git in Eclipse - EclipseCon EU - 2016-10-26

.gitattributesJGit 4.3

fixed most wanted JGit bug (108 votes)

● filter attributes (4.2)● text attributes● eol attributes● macros

Page 23: News from Git in Eclipse - EclipseCon EU - 2016-10-26

LFSLarge File Storage

JGit, EGit

client

● integrate git-lfs extension in client (4.2)● built-in JGit LFS extension (4.6)

server

● basic JGit LFS server (4.3)○ file system or S3 storage

● Gerrit lfs plugin (Gerrit 2.13)

Page 24: News from Git in Eclipse - EclipseCon EU - 2016-10-26

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

Page 25: News from Git in Eclipse - EclipseCon EU - 2016-10-26

.gitattributesslides.pdfX.java

Large File Storage (LFS) extension

.git-- objects

-- lfs

git server

lfs server

git

git-lfs

Page 26: News from Git in Eclipse - EclipseCon EU - 2016-10-26

.gitattributesslides.pdfX.java

LFS configuration

.gitattributes*.pdf filter=lfs diff=lfs merge=lfs -text.gitconfig

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

which files to store in LFS ?

lfs clean filter intercepts add

lfs smudge filter intercepts checkout

.git-- config-- objects

-- lfs

Page 27: News from Git in Eclipse - EclipseCon EU - 2016-10-26

.gitattributesslides.pdfX.java

git add slides.pdf

version git-lfs/spec/v1id sha256:5891b5b522...size 6

store meta data in objectsstore big file in lfs objects

lfs clean filter

slides.pdf

.git-- objects

-- lfs

Page 28: News from Git in Eclipse - EclipseCon EU - 2016-10-26

.gitattributesslides.pdfX.java

git push origin

git server

lfs server

pre-push hook

version git-lfs/spec/v1id sha256:5891b5b522...size 6

push

slides.pdf

.git-- objects

-- lfs

Page 29: News from Git in Eclipse - EclipseCon EU - 2016-10-26

.gitattributesslides.pdfX.java

git fetch/clone, git checkout

git server

lfs server

version git-lfs/spec/v1id sha256:5891b5b522...size 6

fetch

checkoutdownloads large object lazily

slides.pdf

lfs smudge filter

.git-- objects

-- lfs

Page 30: News from Git in Eclipse - EclipseCon EU - 2016-10-26

EGit

Gerrit.gitattributesslides.pdfX.java

LFS server with JGit filesystem/S3 storage

JGit

JGit LFS client

Gerrit plugin

LFS storage(filesystem

/ S3)

.git-- objects

JGit LFS server

.git-- objects

-- lfs

Page 31: News from Git in Eclipse - EclipseCon EU - 2016-10-26

The quest for distributed JGit

JGit

RefTree (4.2)

● version refs as git objects● repository state described by RefTree

commit containing ref updates● enables atomic push

Ketch (4.3)

● distributed transaction log based on RefTree

● Raft distributed consensus for leader election

● basis for distributed JGit server

Page 32: News from Git in Eclipse - EclipseCon EU - 2016-10-26

RefTree: Versioning branches in git

store refs in git tree objects

push can update many refs -> stored in one RefTree commit

-> enable transactional ref updates when receiving a pack-> compare single SHA1 to compare repository states

Page 33: News from Git in Eclipse - EclipseCon EU - 2016-10-26

jgitclone with worktreestandard refs

jgit.gitbare repositoryrefs stored in RefTree

bootstrap branch symlinkedobjects linked via alternates

commit,push bootstrap

branchbootstrap branch

RefTreeVersions

symlink

objects alternatesobjects

spyempty, used for introspection

Page 34: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Ketch: multi-master git repository

● leader election (Raft)leader

Page 35: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Ketch: multi-master git repository

● leader election (Raft)● push arrives on any server

push

leader

Page 36: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Ketch: multi-master git repository

● leader election (Raft)● push arrives on any server● queue proposal to leader● leader creates new RefTree

describing target state

push

queue proposal RefTree

leader

Page 37: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Ketch: multi-master git repository

● leader election (Raft)● push arrives on any server● queue proposal to leader● leader creates new RefTree

describing target state● replicate objects and RefTree

to majority of serverspush

queue proposal RefTree

RefTree

leader

Page 38: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Ketch: multi-master git repository

● leader election (Raft)● push arrives on any server● queue proposal to leader● leader creates new RefTree

describing target state● replicate objects and RefTree

to majority of serverspush

queue proposal RefTree

RefTreeRefTree

leader

Page 39: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Ketch: multi-master git repository

● leader election (Raft)● push arrives on any server● queue proposal to leader● leader creates new RefTree

describing target state● replicate objects and RefTree

to majority of servers● commit transaction

ackack

RefTree

RefTreeRefTree

leader

Page 40: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Questions & Answers

Page 41: News from Git in Eclipse - EclipseCon EU - 2016-10-26

Evaluate the Sessions

Sign in and vote at eclipsecon.org

- 1 + 10