SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Evolution of Version
Control in Open Source
Lessons learned along the path to distributed version control
Chris Aniszczyk (Red Hat)
Principal Software Engineer
zx@redhat.com
http://aniszczyk.org
About Me
I've been using and hacking open source for ~12 years
Eclipse Board of Directors, Committer Representative
Member in the Eclipse {Architecture,Planning} Council
I like to run! (just finished Chicago marathon in 3:20)
Co-author of RCP Book (www.eclipsercp.org)
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
History of Version Control (VCS)
The Rise of Distributed Version Control (DVCS)
Lessons Learned at Eclipse moving to a DVCS
Conclusion
Q&A
Agenda
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control
Version Control Systems manage change
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
“The only constant is change” (Heraclitus)
Why Version Control?
VCS became essential to software development because:
They allow teams to collaborate
They manage change and allow for inspection
They track ownership
They track evolution of changes
They allow for branching
They allow for continuous integration
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control: The Ancients
1972 – Source Code Control System (SCCS)
Born out of Bell Labs, based on interleaved deltas
No open source implementations as far as I know
1982 – Revision Control System (RCS)
Released as an alternative to SCCS
Operates on single files
Open source implementation hosted at GNU
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control: The Centralized
One centralized server with the revision information
Clients checkout a working copy locally
Most operations happen on the server
Linear revision history
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control: The Centralized
1990 – Concurrent Versions System (CVS)
Initially released as some scripts on top of RCS
Made branching possible for most people
Revisions by commits are per file :(
No atomic commit :(
Not really maintained anymore...
2000 – Subversion (SVN)
Released as an improvement to CVS
Atomic commits via transactions
Open source implementation hosted at Apache
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
“Hey, get back to work!”
… “My code's merging” - remember those days you
spent merging in changes in CVS/SVN?
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control: The Distributed
Every client has a copy of the full repository locally
All repository operations are local (except sharing)
Intelligent network operations when sharing content
A very non linear revision history
Large online communities to share changes
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control: The Distributed
2001 – GNU arch
First open source DVCS
Deprecated; not maintained anymore
--- In 2005, Bitkeeper was no longer open source ---
2005 – Git
Created as the SCM for the Linux kernel by Linus
2005 – Mercurial (Hg)
Cross-platform DVCS
2007 – Bazaar (BZR)
Sponsored by Canonical
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
History of Version Control (VCS)
The Rise of Distributed Version Control (DVCS)
- How does a DVCS work?
- The benefits of a DVCS
Lessons Learned at Eclipse moving to a DVCS
Conclusion
Q&A
Agenda
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
How does it work?
A DVCS generally operates at the level of a changeset
Logically, a repository is made up from an initial empty
state, followed by many changesets
Changesets are identified by a SHA-1 hash value
e.g., 0878a8189e6a3ae1ded86d9e9c7cbe3f
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
It's all about the changesets
previous: 48b2179994d494485b79504e8b5a6b23ce24a026
--- a/README.txt
+++ b/README.txt
@@ -1 +1 @@
-SVN is great
+Git is great
previous: 6ff60e964245816221414736d7e5fe6972246ead
--- a/README.txt
+++ b/README.txt
@@ -1 +1 @@
-Git is great
+SVN is great
Changesets contain pointers to the previous changeset
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Branches
The current version of your repository is simply a pointer
to the end of the tree
The default "trunk" in Git is called "master"
The tip of the current branch is called "HEAD"
Any branch can be referred to by its hash id
Creating branches in a DVCS is fast, you simply point to
a different element in the tree on disk already
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Merging
DVCS are all about merging
Merges are just the weaving together of two (or more)
local branches into one
However, unlike CVCS, you don't have to specify
anything about where you're merging from and to; the
trees automatically know what their split point was in the
past, and can work it out from there.
Merging is much easier in a DVCS like Git
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Pulling and Pushing
We've not talked about the distributed nature of DVCS
Changes flow between repositories by push and pull
Since a DVCS tree is merely a pointer to a branch...
There's three cases to consider for comparing two trees:
• Your tip is an ancestor of my tip
• My tip is an ancestor of your tip
• Neither of our tips are direct ancestors; however, we
both share a common ancestor
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Cloning and Remotes
git clone git://egit.eclipse.org/egit.git
Where you can push or pull to is configured on a per
(local) repository basis
git remote add github http://github.com/zx/myegit.git
origin is the default remote; you can have many remotes
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Software Trends and Revolution
Most major open source projects use some form of DVCS
Git, Hg, Bazaar
Linux
MySQL
OpenJDK
Android
JQuery
Gnome
Fedora
Bugzilla and so on...
But why?
Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
Benefits of Distributed Version Control
Can collaborate without a central authority
Disconnected operations
Easy branching and merging
Define your own workflow
Powerful community sharing tools
Easier path to contributor to committer
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Collaboration
Developers can easily collaborate directly without
needing a central authority or dealing with server
administration costs
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Disconnected operations rule!
Developers can still be productive and not worry
about a central server going down... remember the
days of complaining that CVS was down and you
couldn't work?
Also, there's a lighter server
load for administrators!
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Branches everywhere
Creating and destroying branches are simple
operations so it's easy to experiment
with new ideas
Very easy to isolate changes
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Define your own workflow
Define your own workflow to meet your team needs.
Different workflows can be adopted as your team
grows without changing VCS toolsets!
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
DVCS and Building Community
Developers can easily discover and fork projects. On
top of that, it's simple for developers to share their
changes
“Distributed version control is all about empowering
your community, and the people who might join your
community” - Mark Shuttleworth
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
History of Version Control (VCS)
The Rise of Distributed Version Control (DVCS)
Lessons Learned at Eclipse moving to a DVCS
- Version control at Eclipse
- Code review at Eclipse
- Challenges in moving to a DVCS
Conclusion
Q&A
Agenda
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Version Control at Eclipse
Eclipse defined a roadmap to move to Git in 2009
CVS is deprecated; SVN will be deprecated in the future
EGit is an Eclipse Team provider for Git
http://www.eclipse.org/egit/
JGit is a lightweight Java library implementing Git
http://www.eclipse.org/jgit/
The goal is to build an Eclipse community around Git
So why did Eclipse.org choose Git?
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
#1: Git-related projects at Eclipse.org
… both the core Git library (JGit) and tooling (EGit)
are actively developed at Eclipse.org by a diverse set
of committers and contributors with a common goal
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
History of JGit and EGit
2005 Linus Torvalds starts Git
2006 Shawn Pearce starts JGit
2009 Eclipse decides roadmap for Git migration
JGit/EGit move to eclipse.org
SAP joins JGit/EGit
3/2010 Released 0.7 (first release at Eclipse)
Diff/Merge Algorithms, Automatic IP Logs
6/2010 Released 0.8 (Helios)
Usability Improvements, Git Repositories View, Tagging
9/2010 Released 0.9 (Helios SR1)
Merge, Synchronize View, .gitignore
Planned: 12/2010 0.10 (Helios SR2) 3/2011 0.11 6/2011 1.0 (Indigo)
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
#2: Git is fast
… Git is fast and scales well
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
*whyisgitbetterthanx.com
#3: Git is mature and popular
… Git is widely used and is the most popular
distributed version control system
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
#4: Git community tools
… the Eclipse community is interested in taking
advantage of such Git tools like Gerrit Code Review
and GitHub
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Roles at Eclipse and Code Review
Committer
Formally elected
Can commit own changes without review
Contributor
Small changes
reviewed by committers
Bigger changes
also formal IP review by legal team
in separate protected Bugzilla (IPZilla)
Review Tool
patches attached to bug in Bugzilla
comments in Bugzilla
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Code Review via Bugzilla
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Eclipse – Review Process
Contributors
• create patch using CVS, SVN, Git (since 2009)
• attach patch to bug in Bugzilla
Committers
• do code and IP review
• comment, vote in Bugzilla
• create CQ for changes needing IP review
• commit accepted changes
IP Team
• does IP review bigger changes from contributors
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Eclipse – Review Process
Review not done for all changes
Each Eclipse.org project does it differently
Review tedious for contributors
(and also for committers mentoring contributors)
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Gerrit Code Review
Gerrit is a Code Review system based on JGit
http://code.google.com/p/gerrit/
Also serves as a git server
adding access control and workflow
Used by
• Android https://review.source.android.com/
• JGit, EGit http://egit.eclipse.org/r/
• Google, SAP, …
Eclipse wants to use it …
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
History: Google and code review tools
Mondrian (Guido van Rossum)
• based on Perforce, Google infrastructure
• Google proprietary
Rietvield (Guido van Rossum)
• based on Subversion
• Open Source hosted on GoogleApp Engine
Gerrit (Shawn Pearce)
• started as a fork of Rietvield
• based on JGit and GWT
• Open Source (Android)
• Apache 2 license
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
One Branch One Feature
Master branch contains only reviewed and approved changes
• master moves from good to better state after each
(approved) change
Each feature branch is based on master branch
• stable starting point
A change can really be abandoned because
• no other approved change can depend on a not yet
approved change
• Gerrit will automatically reject a successor change of an
abandoned change
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Gerrit – Lifecycle of a Change
a
master
topic
1
•
create local topic
branch
•
commit change
•
push it for review
•
do review
•
automated
verification
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Gerrit – Lifecycle of a Change
c
b
a1
2
mastertopic
3
a
master
topic
1
•
create local topic
branch
•
commit change
•
push it for review
•
do review
•
automated
verification
•
refine based on
review
•
push new patchsets
until review votes ok
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Gerrit – Lifecycle of a Change
c
b
a1
2
mastertopic
3
a
master
topic
1
•
create local topic
branch
•
commit change
•
push it for review
•
do review
•
automated
verification
•
refine based on
review
•
push new patchsets
until review votes ok
c
b
a1
2
master
topic
3
d
•
Submit may lead to
server-side merge
•
or merge / rebase before
push
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Gerrit Workflow
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Gerrit
http://egit.eclipse.org/r/ - change,825Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Convincing management and peers was tough
- At first, everyone is resistant to change
The learning curve of DVCS systems is high
- Initially, the Eclipse tooling was “alpha”
- People refuse to drop to the CLI
Legacy is a pain in the arse
- 200+ projects at Eclipse used CVS/SVN
- The existing VCS tooling was high quality
Eclipse.org: Challenges moving to a DVCS
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
No free lunch!
… trust me, the only way to learn DVCS is to start using
it... there is a learning curve, you need to rewire your
brain!
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Git Resources
http://git-scm.com/documentation is your friend
Watch Linus' talk at Google
http://www.youtube.com/watch?v=4XpnKHJAok8
Read the Pro Git book - http://progit.org/book/
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
History of Version Control (VCS)
The Rise of Distributed Version Control (DVCS)
Lessons Learned at Eclipse moving to a DVCS
Conclusion
Q&A
Agenda
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Conclusion
The future of version control is distributed!
Moving to a DVCS takes time
Gerrit enables a nice code review workflow
Open source has embraced the way of DVCS
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
Q&A
Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk

Weitere ähnliche Inhalte

Was ist angesagt?

Version Control System
Version Control SystemVersion Control System
Version Control Systemguptaanil
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumAbhijitNarayan2
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Simplilearn
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
BLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersBLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersMartin Jinoch
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to gitEmanuele Olivetti
 
Software Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and EclipseSoftware Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and EclipseHüseyin Ergin
 
Version control
Version controlVersion control
Version controlvisual28
 
Version control system
Version control systemVersion control system
Version control systemAryman Gautam
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control SystemKMS Technology
 
Git and github fundamentals
Git and github fundamentalsGit and github fundamentals
Git and github fundamentalsRajKharvar
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagramsDilum Navanjana
 

Was ist angesagt? (20)

Version Control System
Version Control SystemVersion Control System
Version Control System
 
Github
GithubGithub
Github
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
BLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersBLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes Developers
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Software Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and EclipseSoftware Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and Eclipse
 
GitHub Presentation
GitHub PresentationGitHub Presentation
GitHub Presentation
 
Version control
Version controlVersion control
Version control
 
Webinar : SVN to GIT Migration
Webinar : SVN to GIT Migration Webinar : SVN to GIT Migration
Webinar : SVN to GIT Migration
 
Intro to Git & GitHub
Intro to Git & GitHubIntro to Git & GitHub
Intro to Git & GitHub
 
Version control system
Version control systemVersion control system
Version control system
 
Git Version Control System
Git Version Control SystemGit Version Control System
Git Version Control System
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
 
Migrating To GitHub
Migrating To GitHub  Migrating To GitHub
Migrating To GitHub
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
Git and github fundamentals
Git and github fundamentalsGit and github fundamentals
Git and github fundamentals
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
 

Ähnlich wie Evolution of Version Control In Open Source

EclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at EclipseEclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at Eclipsemsohn
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Liran Levy
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitMarco Ferrigno
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps ParadigmNaLUG
 
What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.anilpmuvvala
 
What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.anilpmuvvala
 
Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Bhavya Chawla
 
DWX 2017 - DevOps by examples
DWX 2017 - DevOps by examplesDWX 2017 - DevOps by examples
DWX 2017 - DevOps by examplesGiulio Vian
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlWei-Tsung Su
 
Migrating to Microservices – It's Easier Than You Think
Migrating to Microservices – It's Easier Than You ThinkMigrating to Microservices – It's Easier Than You Think
Migrating to Microservices – It's Easier Than You ThinkDevOps.com
 
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps ZNetLive
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDr Ganesh Iyer
 
Git presentation
Git presentationGit presentation
Git presentationjordimash
 
Are VM Passé?
Are VM Passé? Are VM Passé?
Are VM Passé? dotCloud
 
Understanding and Using Git at Eclipse
Understanding and Using Git at EclipseUnderstanding and Using Git at Eclipse
Understanding and Using Git at EclipseChris Aniszczyk
 

Ähnlich wie Evolution of Version Control In Open Source (20)

Evolution ofversioncontrolinopensource
Evolution ofversioncontrolinopensourceEvolution ofversioncontrolinopensource
Evolution ofversioncontrolinopensource
 
Evolution of version control in opensource - fossa2010
Evolution of version control in opensource - fossa2010Evolution of version control in opensource - fossa2010
Evolution of version control in opensource - fossa2010
 
EclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at EclipseEclipseCon 2010 tutorial: Understanding git at Eclipse
EclipseCon 2010 tutorial: Understanding git at Eclipse
 
Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates Intro to DevOps 4 undergraduates
Intro to DevOps 4 undergraduates
 
What_is_DevOps.pptx
What_is_DevOps.pptxWhat_is_DevOps.pptx
What_is_DevOps.pptx
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps Paradigm
 
Version Control
Version ControlVersion Control
Version Control
 
What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.What_is_DevOps_how_it's_very_useful_in_daily_Life.
What_is_DevOps_how_it's_very_useful_in_daily_Life.
 
What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.What is DevOps And How It Is Useful In Real life.
What is DevOps And How It Is Useful In Real life.
 
Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.
 
DWX 2017 - DevOps by examples
DWX 2017 - DevOps by examplesDWX 2017 - DevOps by examples
DWX 2017 - DevOps by examples
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Migrating to Microservices – It's Easier Than You Think
Migrating to Microservices – It's Easier Than You ThinkMigrating to Microservices – It's Easier Than You Think
Migrating to Microservices – It's Easier Than You Think
 
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
Webinar by ZNetLive & Plesk- Winning the Game for WebOps and DevOps
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containers
 
Git presentation
Git presentationGit presentation
Git presentation
 
Are VMs Passé?
Are VMs Passé?Are VMs Passé?
Are VMs Passé?
 
Are VM Passé?
Are VM Passé? Are VM Passé?
Are VM Passé?
 
Understanding and Using Git at Eclipse
Understanding and Using Git at EclipseUnderstanding and Using Git at Eclipse
Understanding and Using Git at Eclipse
 

Mehr von Chris Aniszczyk

Bringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationChris Aniszczyk
 
Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Chris Aniszczyk
 
Open Container Initiative Update
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative UpdateChris Aniszczyk
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Chris Aniszczyk
 
Rise of Open Source Programs
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source ProgramsChris Aniszczyk
 
The Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsChris Aniszczyk
 
Open Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupOpen Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupChris Aniszczyk
 
Getting Students Involved in Open Source
Getting Students Involved in Open SourceGetting Students Involved in Open Source
Getting Students Involved in Open SourceChris Aniszczyk
 
Life at Twitter + Career Advice for Students
Life at Twitter + Career Advice for StudentsLife at Twitter + Career Advice for Students
Life at Twitter + Career Advice for StudentsChris Aniszczyk
 
Creating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from TwitterCreating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from TwitterChris Aniszczyk
 
The Open Source... Behind the Tweets
The Open Source... Behind the TweetsThe Open Source... Behind the Tweets
The Open Source... Behind the TweetsChris Aniszczyk
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Chris Aniszczyk
 
Evolution of The Twitter Stack
Evolution of The Twitter StackEvolution of The Twitter Stack
Evolution of The Twitter StackChris Aniszczyk
 
Open Source Craft at Twitter
Open Source Craft at TwitterOpen Source Craft at Twitter
Open Source Craft at TwitterChris Aniszczyk
 
Open Source Compliance at Twitter
Open Source Compliance at TwitterOpen Source Compliance at Twitter
Open Source Compliance at TwitterChris Aniszczyk
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonChris Aniszczyk
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with EclipseChris Aniszczyk
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseChris Aniszczyk
 
Helios in Action: Git at Eclipse
Helios in Action: Git at EclipseHelios in Action: Git at Eclipse
Helios in Action: Git at EclipseChris Aniszczyk
 

Mehr von Chris Aniszczyk (20)

Bringing an open source project to the Linux Foundation
Bringing an open source project to the Linux FoundationBringing an open source project to the Linux Foundation
Bringing an open source project to the Linux Foundation
 
Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)Starting an Open Source Program Office (OSPO)
Starting an Open Source Program Office (OSPO)
 
Open Container Initiative Update
Open Container Initiative UpdateOpen Container Initiative Update
Open Container Initiative Update
 
Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)Cloud Native Landscape (CNCF and OCI)
Cloud Native Landscape (CNCF and OCI)
 
Rise of Open Source Programs
Rise of Open Source ProgramsRise of Open Source Programs
Rise of Open Source Programs
 
The Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 monthsThe Open Container Initiative (OCI) at 12 months
The Open Container Initiative (OCI) at 12 months
 
Open Source Lessons from the TODO Group
Open Source Lessons from the TODO GroupOpen Source Lessons from the TODO Group
Open Source Lessons from the TODO Group
 
Getting Students Involved in Open Source
Getting Students Involved in Open SourceGetting Students Involved in Open Source
Getting Students Involved in Open Source
 
Life at Twitter + Career Advice for Students
Life at Twitter + Career Advice for StudentsLife at Twitter + Career Advice for Students
Life at Twitter + Career Advice for Students
 
Creating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from TwitterCreating an Open Source Office: Lessons from Twitter
Creating an Open Source Office: Lessons from Twitter
 
The Open Source... Behind the Tweets
The Open Source... Behind the TweetsThe Open Source... Behind the Tweets
The Open Source... Behind the Tweets
 
Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)Apache Mesos at Twitter (Texas LinuxFest 2014)
Apache Mesos at Twitter (Texas LinuxFest 2014)
 
Evolution of The Twitter Stack
Evolution of The Twitter StackEvolution of The Twitter Stack
Evolution of The Twitter Stack
 
Open Source Craft at Twitter
Open Source Craft at TwitterOpen Source Craft at Twitter
Open Source Craft at Twitter
 
Open Source Compliance at Twitter
Open Source Compliance at TwitterOpen Source Compliance at Twitter
Open Source Compliance at Twitter
 
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and HudsonEffective Development With Eclipse Mylyn, Git, Gerrit and Hudson
Effective Development With Eclipse Mylyn, Git, Gerrit and Hudson
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with Eclipse
 
ESE 2010: Using Git in Eclipse
ESE 2010: Using Git in EclipseESE 2010: Using Git in Eclipse
ESE 2010: Using Git in Eclipse
 
SWTBot Tutorial
SWTBot TutorialSWTBot Tutorial
SWTBot Tutorial
 
Helios in Action: Git at Eclipse
Helios in Action: Git at EclipseHelios in Action: Git at Eclipse
Helios in Action: Git at Eclipse
 

Kürzlich hochgeladen

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Kürzlich hochgeladen (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Evolution of Version Control In Open Source

  • 1. Evolution of Version Control in Open Source Lessons learned along the path to distributed version control Chris Aniszczyk (Red Hat) Principal Software Engineer zx@redhat.com http://aniszczyk.org
  • 2. About Me I've been using and hacking open source for ~12 years Eclipse Board of Directors, Committer Representative Member in the Eclipse {Architecture,Planning} Council I like to run! (just finished Chicago marathon in 3:20) Co-author of RCP Book (www.eclipsercp.org) Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 3. History of Version Control (VCS) The Rise of Distributed Version Control (DVCS) Lessons Learned at Eclipse moving to a DVCS Conclusion Q&A Agenda Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 4. Version Control Version Control Systems manage change Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk “The only constant is change” (Heraclitus)
  • 5. Why Version Control? VCS became essential to software development because: They allow teams to collaborate They manage change and allow for inspection They track ownership They track evolution of changes They allow for branching They allow for continuous integration Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 6. Version Control: The Ancients 1972 – Source Code Control System (SCCS) Born out of Bell Labs, based on interleaved deltas No open source implementations as far as I know 1982 – Revision Control System (RCS) Released as an alternative to SCCS Operates on single files Open source implementation hosted at GNU Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 7. Version Control: The Centralized One centralized server with the revision information Clients checkout a working copy locally Most operations happen on the server Linear revision history Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 8. Version Control: The Centralized 1990 – Concurrent Versions System (CVS) Initially released as some scripts on top of RCS Made branching possible for most people Revisions by commits are per file :( No atomic commit :( Not really maintained anymore... 2000 – Subversion (SVN) Released as an improvement to CVS Atomic commits via transactions Open source implementation hosted at Apache Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 9. “Hey, get back to work!” … “My code's merging” - remember those days you spent merging in changes in CVS/SVN? Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 10. Version Control: The Distributed Every client has a copy of the full repository locally All repository operations are local (except sharing) Intelligent network operations when sharing content A very non linear revision history Large online communities to share changes Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 11. Version Control: The Distributed 2001 – GNU arch First open source DVCS Deprecated; not maintained anymore --- In 2005, Bitkeeper was no longer open source --- 2005 – Git Created as the SCM for the Linux kernel by Linus 2005 – Mercurial (Hg) Cross-platform DVCS 2007 – Bazaar (BZR) Sponsored by Canonical Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 12. History of Version Control (VCS) The Rise of Distributed Version Control (DVCS) - How does a DVCS work? - The benefits of a DVCS Lessons Learned at Eclipse moving to a DVCS Conclusion Q&A Agenda Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 13. How does it work? A DVCS generally operates at the level of a changeset Logically, a repository is made up from an initial empty state, followed by many changesets Changesets are identified by a SHA-1 hash value e.g., 0878a8189e6a3ae1ded86d9e9c7cbe3f Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 14. It's all about the changesets previous: 48b2179994d494485b79504e8b5a6b23ce24a026 --- a/README.txt +++ b/README.txt @@ -1 +1 @@ -SVN is great +Git is great previous: 6ff60e964245816221414736d7e5fe6972246ead --- a/README.txt +++ b/README.txt @@ -1 +1 @@ -Git is great +SVN is great Changesets contain pointers to the previous changeset Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 15. Branches The current version of your repository is simply a pointer to the end of the tree The default "trunk" in Git is called "master" The tip of the current branch is called "HEAD" Any branch can be referred to by its hash id Creating branches in a DVCS is fast, you simply point to a different element in the tree on disk already Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 16. Merging DVCS are all about merging Merges are just the weaving together of two (or more) local branches into one However, unlike CVCS, you don't have to specify anything about where you're merging from and to; the trees automatically know what their split point was in the past, and can work it out from there. Merging is much easier in a DVCS like Git Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 17. Pulling and Pushing We've not talked about the distributed nature of DVCS Changes flow between repositories by push and pull Since a DVCS tree is merely a pointer to a branch... There's three cases to consider for comparing two trees: • Your tip is an ancestor of my tip • My tip is an ancestor of your tip • Neither of our tips are direct ancestors; however, we both share a common ancestor Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 18. Cloning and Remotes git clone git://egit.eclipse.org/egit.git Where you can push or pull to is configured on a per (local) repository basis git remote add github http://github.com/zx/myegit.git origin is the default remote; you can have many remotes Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 19. Software Trends and Revolution Most major open source projects use some form of DVCS Git, Hg, Bazaar Linux MySQL OpenJDK Android JQuery Gnome Fedora Bugzilla and so on... But why? Using Git in Eclipse | © 2010 by C. Aniszczyk and M. Sohn
  • 20. Benefits of Distributed Version Control Can collaborate without a central authority Disconnected operations Easy branching and merging Define your own workflow Powerful community sharing tools Easier path to contributor to committer Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 21. Collaboration Developers can easily collaborate directly without needing a central authority or dealing with server administration costs Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 22. Disconnected operations rule! Developers can still be productive and not worry about a central server going down... remember the days of complaining that CVS was down and you couldn't work? Also, there's a lighter server load for administrators! Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 23. Branches everywhere Creating and destroying branches are simple operations so it's easy to experiment with new ideas Very easy to isolate changes Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 24. Define your own workflow Define your own workflow to meet your team needs. Different workflows can be adopted as your team grows without changing VCS toolsets! Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 25. DVCS and Building Community Developers can easily discover and fork projects. On top of that, it's simple for developers to share their changes “Distributed version control is all about empowering your community, and the people who might join your community” - Mark Shuttleworth Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 26. History of Version Control (VCS) The Rise of Distributed Version Control (DVCS) Lessons Learned at Eclipse moving to a DVCS - Version control at Eclipse - Code review at Eclipse - Challenges in moving to a DVCS Conclusion Q&A Agenda Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 27. Version Control at Eclipse Eclipse defined a roadmap to move to Git in 2009 CVS is deprecated; SVN will be deprecated in the future EGit is an Eclipse Team provider for Git http://www.eclipse.org/egit/ JGit is a lightweight Java library implementing Git http://www.eclipse.org/jgit/ The goal is to build an Eclipse community around Git So why did Eclipse.org choose Git? Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 28. #1: Git-related projects at Eclipse.org … both the core Git library (JGit) and tooling (EGit) are actively developed at Eclipse.org by a diverse set of committers and contributors with a common goal Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 29. History of JGit and EGit 2005 Linus Torvalds starts Git 2006 Shawn Pearce starts JGit 2009 Eclipse decides roadmap for Git migration JGit/EGit move to eclipse.org SAP joins JGit/EGit 3/2010 Released 0.7 (first release at Eclipse) Diff/Merge Algorithms, Automatic IP Logs 6/2010 Released 0.8 (Helios) Usability Improvements, Git Repositories View, Tagging 9/2010 Released 0.9 (Helios SR1) Merge, Synchronize View, .gitignore Planned: 12/2010 0.10 (Helios SR2) 3/2011 0.11 6/2011 1.0 (Indigo) Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 30. #2: Git is fast … Git is fast and scales well Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk *whyisgitbetterthanx.com
  • 31. #3: Git is mature and popular … Git is widely used and is the most popular distributed version control system Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 32. #4: Git community tools … the Eclipse community is interested in taking advantage of such Git tools like Gerrit Code Review and GitHub Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 33. Roles at Eclipse and Code Review Committer Formally elected Can commit own changes without review Contributor Small changes reviewed by committers Bigger changes also formal IP review by legal team in separate protected Bugzilla (IPZilla) Review Tool patches attached to bug in Bugzilla comments in Bugzilla Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 34. Code Review via Bugzilla Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 35. Eclipse – Review Process Contributors • create patch using CVS, SVN, Git (since 2009) • attach patch to bug in Bugzilla Committers • do code and IP review • comment, vote in Bugzilla • create CQ for changes needing IP review • commit accepted changes IP Team • does IP review bigger changes from contributors Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 36. Eclipse – Review Process Review not done for all changes Each Eclipse.org project does it differently Review tedious for contributors (and also for committers mentoring contributors) Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 37. Gerrit Code Review Gerrit is a Code Review system based on JGit http://code.google.com/p/gerrit/ Also serves as a git server adding access control and workflow Used by • Android https://review.source.android.com/ • JGit, EGit http://egit.eclipse.org/r/ • Google, SAP, … Eclipse wants to use it … Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 38. History: Google and code review tools Mondrian (Guido van Rossum) • based on Perforce, Google infrastructure • Google proprietary Rietvield (Guido van Rossum) • based on Subversion • Open Source hosted on GoogleApp Engine Gerrit (Shawn Pearce) • started as a fork of Rietvield • based on JGit and GWT • Open Source (Android) • Apache 2 license Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 39. One Branch One Feature Master branch contains only reviewed and approved changes • master moves from good to better state after each (approved) change Each feature branch is based on master branch • stable starting point A change can really be abandoned because • no other approved change can depend on a not yet approved change • Gerrit will automatically reject a successor change of an abandoned change Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 40. Gerrit – Lifecycle of a Change a master topic 1 • create local topic branch • commit change • push it for review • do review • automated verification Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 41. Gerrit – Lifecycle of a Change c b a1 2 mastertopic 3 a master topic 1 • create local topic branch • commit change • push it for review • do review • automated verification • refine based on review • push new patchsets until review votes ok Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 42. Gerrit – Lifecycle of a Change c b a1 2 mastertopic 3 a master topic 1 • create local topic branch • commit change • push it for review • do review • automated verification • refine based on review • push new patchsets until review votes ok c b a1 2 master topic 3 d • Submit may lead to server-side merge • or merge / rebase before push Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 43. Gerrit Workflow Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 44. Gerrit http://egit.eclipse.org/r/ - change,825Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 45. Convincing management and peers was tough - At first, everyone is resistant to change The learning curve of DVCS systems is high - Initially, the Eclipse tooling was “alpha” - People refuse to drop to the CLI Legacy is a pain in the arse - 200+ projects at Eclipse used CVS/SVN - The existing VCS tooling was high quality Eclipse.org: Challenges moving to a DVCS Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 46. No free lunch! … trust me, the only way to learn DVCS is to start using it... there is a learning curve, you need to rewire your brain! Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 47. Git Resources http://git-scm.com/documentation is your friend Watch Linus' talk at Google http://www.youtube.com/watch?v=4XpnKHJAok8 Read the Pro Git book - http://progit.org/book/ Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 48. History of Version Control (VCS) The Rise of Distributed Version Control (DVCS) Lessons Learned at Eclipse moving to a DVCS Conclusion Q&A Agenda Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 49. Conclusion The future of version control is distributed! Moving to a DVCS takes time Gerrit enables a nice code review workflow Open source has embraced the way of DVCS Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk
  • 50. Q&A Evolution of Version Control in Open Source | © 2010 by Chris Aniszczyk

Hinweis der Redaktion

  1. <number>