2. What is Git?
Distributed Version Control System
Patch management
Created for the Linux Kernel
E-mail based contributions
Thousands of contributors
High activity
Parallel development
Strong focus on code review
eclipse.org/egit
4. 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
6. Chaos?
Projects use only a subset of potential workflows
Individuals 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
7. Git Internals Crash Course
Cryptographic signatures ... ensures data integrity
Snapshot based ... saves whole project
eclipse.org/egit
8. Git Internals Crash Course
Cryptographic signatures ... ensures data integrity
Snapshot based ... saves whole project
History stored as graph ... accurate records
eclipse.org/egit
9. 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
11. EGit Project History
2005 Linus Torvalds starts Git
2006 Proof-of-concept, quite unusable
Not a "port", ground-up pure Java
Originally one project
eclipse.org/egit
12. EGit Project History
2005 Linus Torvalds starts Git
2006 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
13. EGit Project History
2005 Linus Torvalds starts Git
2006 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
14. EGit Project History
2005 Linus Torvalds starts Git
2006 Proof-of-concept, quite unusable
2007 Index reader, quickdiff
2008 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
15. EGit Project History
2005 Linus Torvalds starts Git
2006 Proof-of-concept, quite unusable
2007 Index reader, quickdiff
2008 Add history view, commit, push/fetch
2009 Moved to Eclipse.org
2010 Diff/Merge
Exit Incubation
Release 1.0
eclipse.org/egit
17. 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
18. 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
19. Current State
Usable: clone, commit, push, pull, history, diff
Missing: merge, rebase, gc
(use C Git command line for now ... coming soon)
Performance on par with C
More active community
Development accelerating
Eclipse integration improving
eclipse.org/egit
21. Future
Standard Eclipse SCM ... migrate from CVS/SVN
Standard Eclipse plugin ... shipped in all packages
Complete implementation ... no C code required
Standard outside Eclipse ... BSD license is very friendly
eclipse.org/egit
22. Thank You
Want More?
"Understanding and Using Git at Eclipse"
Thursday @ 10 am
in Stevens Creek
eclipse.org/egit