Effective version control
-
Upload
devobjective -
Category
Technology
-
view
137 -
download
1
Transcript of Effective version control
Effective Version ControlBarney Boisvert
Agenda
● Who am I?
● Concepts
● Evolution
● Best practices
● Centralized or Distributed?
Who Am I?
● Software Architect
● JVM Engineer
● Craftsman
● Father
● Goalkeeper
● Whisk(e)?y Enthusiast
Concepts
● Repository
● Working copy
● Patch
● History
● Tag
Concepts
● Repository
● Working copy
● Patch
● History
● Tag
1 2 3 4 5 6 7 WC
initial commit HEAD
Concepts
● Repository
● Working copy
● Patch
● History
● Tag
1 2 3 4 5 6 7 WC
initial commit HEADv1.0
Concepts
● Branch
● Merge
● Ancestry
● Repository
● Working copy
● Patch
● History
● Tag
1 2
3
4
5
6
7
WC
initial commit
HEAD
HEAD
v1.0
Evolution*
● SCCS
● RCS
● CVS
● SVN
● Git / Mercurial
open-source centric, not comprehensive BitMover Inc. Perforce Software Inc. IBM Rational Microsoft
● BitKeeper
● Perforce
● ClearCase
● TFS, née VSS
1
2
3
1
2
3
*
4
4
Evolution
● diff, patch & email ● SCCS
● RCS
● CVS
● SVN
● Git/Mercurial
“Best” Practices
● All Hail /trunk!
● Commit early, commit often
● Branch early, merge often
“Best” Practices
● All Hail /trunk!
● Commit early, commit often
● Branch early, merge often
● master is always releasable
● Use feature branch(es)
● Tag every release
● Hotfix branches
● Release artifacts
“Distributed” Version Control Systems
● Holy Shiny Tech, Batman!
● Defer centralization
● Whole repo everywhere
● BLOB storage
● Repo-per-unit
● Access-per-repo
● Addressability
Concepts
● Vendor branch
● Fork
● Pull request
● Repository
● Working copy
● Patch
● History
● Ancestry
● Branch
● Merge
● Tag
Evolution
● Facebook's Mercurial
● XxxHub.com
● SCCS
● RCS
● CVS
● SVN
● Git/Mercurial
● diff, patch & email
Soapbox!
Version ControlIf you aren't using version control, start before you do anything else.
ToolingYour tools are more powerful than you can possibly imagine.
Don't be a HeroPeople smarter than you (or I) already did it; use their code.