2. X
Version Control Software
A way to keep a multiple revisions of a single
resource without creating copies
Undo either short or long term
Audit-trail of who did what and when
Access to details of why a change was made
Tools to help teams of developers work on a single
code base
3. History of Version Control Systems
“Those who cannot remember the past are
condemned to repeat it.” - George Santanya
4. SCCS - Source Code Control System
The first Version Control System, built during the
70s
Was dominant until RCS was released
SCCS had no concept of branching
Internal file format is still used today by Bitkeeper
and TeamWare
Tools still available to access the SCCS format
5. RCS - Revision Control System
Built During the 80s as “a better SCCS”
Only knows about revisions of single files
Supports branching, badly
“RCS automates the storing, retrieval, logging,
identification, and merging of revisions.”
- GNU RCS homepage
6. CVS - Concurrent Versioning System
Originally based upon RCS (for managing sets of files/projects) in
the late 80s, by Dick Grune and later rewritten by Brian Berliner
Only files are versioned, no symlinks or directories
No direct moving/renaming capability
Branching and merging can be a world of pain
Allows control over who can commit
Stable, well supported infrastructure and tools
8. SVN - Subversion
Project start by collab.net in 2000
Built to improve on CVS
Atomic commits
Allows renaming/moving of assets
Language bindings for all common programming
languages
9. What do you look for in a
revision control system?
Stability
Easy to use
Doesn’t get in the way of me developing my stuff
Flexibility
Extensible
10. Introduction to Bazaar
Easy to branch and smarter merging
First-class renaming capabilities
No server software needed - “Batteries included”
Designed with usability, ease of use in mind
Cross platform: Linux, BSD, OSX, Windows
Flexible and extensible, with a full plug-in system
13. Workflows: Solo
As simple as pick a directory and tell bazaar to
start versioning it
No server/database setup
Sharing with other developers is easy, should it be
needed
Let’s look at an example...
14. Set-up a versioned dir
$ cd ~/bazaar/demo
$ bzr init
~/bazaar/demo is now set-up to be
versioned
25. Why use Distributed VCS in tandem
with Centralised Version Control?
Company policy requires the use of a centralised
system
Development with centralised VCS is harder
A modern VCS brings more advanced merging
Reduction in developer suicide rate
26. Using Distributed VCS in tandem
with Centralised Version Control
Keeping history:
Tailor is a tool that can convert between many
different rcs http://progetti.arstecnica.it/tailor
CVSPSImport converts directly from CVS
http://bazaar-vcs.org/CVSPSImport
Ignore history and take current set of files
Faster but obviously you lose access to older
history
27.
28. Launchpad.net
Similar to sourceforge with 100% less CVS
Tightly integrated with Bazaar - though import
from other VCS is possible
Removes the barriers to contributing open-
source development
Bug tracking, FAQ, Documentation and
translation management
29. Launchpad Example
Bazaar-email is a simple plug-in that uses the
post-commit hooks in bazaar to mail diffs
To contribute back to the project I raised bugs
for trivial issues found using the plug-in
A developer fixed one of these issues and
submitted a branch linked to the bug
To add this to trunk the maintainer can simply
carry out a merge
30. Launchpad Bug fix process
Branch the trunk/main branch
Make + test the fix
Push the fix back to launchpad and associate it
with the bug number
bzr push sftp://user@bazaar.launchpad.net/~user/project/branch
The maintainer can then merge the fix into the
trunk
31. Adding a feature to a project
Branch the trunk/main branch
Merged pending bugfixes
Develop the feature
Push to launchpad
bzr push sftp://user@bazaar.launchpad.net/~user/project/branch
Raise merge request
34. Conclusion
Version control has come a long way
De-centralisation is the future!
First-class merging makes this all possible
Development should never be constrained by
the version control system you use