Upload
msohn
View
9.662
Download
0
Tags:
Embed Size (px)
DESCRIPTION
EclipseCon 2010 talk
Citation preview
Towards Contributor's HeavenFrom CVS and SVN to Git
Shawn PearceRobin Rosenberg
Matthias Sohn
eclipse.org/egit
What is Git?
Distributed Version Control SystemPatch management
Created for the Linux Kernel
E-mail based contributionsThousands of contributors
High activityParallel developmentStrong focus on code review
eclipse.org/egit
Distributed Version Control
Distributed Version Control
Enables every contributor ... not just committers
Has full history ... locally
Can branch, merge, rebase ... locally
Can exchange work with others ... peer to peer
Superior branch, merge functionality
eclipse.org/egit
Distributed Version Control
eclipse.org/egit
Chaos?
Projects use only a subset of potential workflowsIndividuals use personal workflows that others do not see
Examples:
Git (C implementation) All contributions are e-mailed
EGit/JGit All contributions via Gerrit (Used to be e-mail)
Linux kernel All contributions e-mailed Subsystem maintainers also pull
eclipse.org/egit
Git Internals Crash Course
Cryptographic signatures ... ensures data integrity
Snapshot based ... saves whole project
eclipse.org/egit
Git Internals Crash Course
Cryptographic signatures ... ensures data integrity
Snapshot based ... saves whole project
History stored as graph ... accurate records
eclipse.org/egit
Git Internals Crash Course
Cryptographic signatures ... ensures data integrity
Snapshot based ... saves whole project
History stored as graph ... accurate records
Smarter merges ... makes branching cheap
eclipse.org/egit
EGit Project History
EGit Project History
2005 Linus Torvalds starts Git2006 Proof-of-concept, quite unusable Not a "port", ground-up pure Java Originally one project
eclipse.org/egit
EGit Project History
2005 Linus Torvalds starts Git2006 Proof-of-concept, quite unusable Not a "port", ground-up pure Java Originally one project
2007 Index reader, quickdiff First useful minimal functionality versions
eclipse.org/egit
EGit Project History
2005 Linus Torvalds starts Git2006 Proof-of-concept, quite unusable Not a "port", ground-up pure Java Originally one project
2007 Index reader, quickdiff First useful versions
2008 Add history view, commit, push/fetch Much more usable License change ( EGit: EPL, JGit: BSD/EDL )
eclipse.org/egit
EGit Project History
2005 Linus Torvalds starts Git2006 Proof-of-concept, quite unusable2007 Index reader, quickdiff2008 Add history view, commit, push/fetch
2009 >5000 downloads/month
Split into two projects EGit - team provider JGit - reusable library
Moved to Eclipse.org
eclipse.org/egit
EGit Project History
2005 Linus Torvalds starts Git2006 Proof-of-concept, quite unusable2007 Index reader, quickdiff2008 Add history view, commit, push/fetch2009 Moved to Eclipse.org
2010 Diff/Merge Exit Incubation Release 1.0
eclipse.org/egit
Why JGit Rocks
Applications Built On JGit
Open Source EGit Eclipse Team Provider
NBGit Git Support for NetBeans
Gerrit Code Review Web based project management and peer code review Buckminster, Maven, JIRA, Hudson, ...
eclipse.org/jgit
Applications Built On JGit
Open Source EGit Eclipse Team Provider
NBGit Git Support for NetBeans
Gerrit Code Review Web based project management and peer code review Buckminster, Maven, JIRA, Hudson, ...
Commercial TeamCity Commercial continuous integration
SmartGit Commercial GUI client
CodeBeamer MR Commercial project management
eclipse.org/jgit
Current State
Usable: clone, commit, push, pull, history, diffMissing: merge, rebase, gc (use C Git command line for now ... coming soon)
Performance on par with C
More active communityDevelopment accelerating
Eclipse integration improving
eclipse.org/egit
Quick EGit Demo
with Gerrit Code Review
Future
Standard Eclipse SCM ... migrate from CVS/SVNStandard Eclipse plugin ... shipped in all packages
Complete implementation ... no C code requiredStandard outside Eclipse ... BSD license is very friendly
eclipse.org/egit
Thank You
eclipse.org/egit
Want More?
"Understanding and Using Git at Eclipse"
Thursday @ 10 am in Stevens Creek