SlideShare a Scribd company logo
Introduction to Version Control and Configuration Management Philip Johnson Collaborative Software Development Laboratory  Information and Computer Sciences University of Hawaii Honolulu HI 96822
Objectives Understand motivation for configuration management technologies. Be able to download/install/use a SVN client. Be able to use SVN for configuration management of your course project.
Why do we care Software is written: As a combination of modules In one or more languages For one or more applications Using one or more libraries Things that may (will) change over time: The modules required and used The languages employed The application requirements The libraries Each change could cause the system to break.
You know you have a CM problem when… “ But the system was working fine yesterday! What happened?” “ But I can’t reproduce your bug in my copy of the system!” “ But I already corrected that code last week!  What happened to my fix?” “ I wonder if that bug was fixed in this copy too?”
CM Defined Configuration management  attempts to identify and track all relevant elements of the configuration of a system, so that all possible errors can be identified, and possible solutions to the problems found. Version control  is a special case of configuration management, where we are concerned with maintaining multiple versions of a software system. Defect tracking systems  monitor the status of error reports from first identification to resolution.  Defect tracking relates to CM because defects occur as a result of changes, and defect removal typically requires a change in configuration.
The Three Classic CM Problems Any configuration management approach must address at least the following  “classic” problems: The double maintenance problem Must prevent occurrence of multiple copies of the same file that must be independently updated.  The shared data problem Must allow two or more developers to access the same file/data. The simultaneous update problem Must prevent  “clobbering” when two developers update the same file at the same time.  “ clobbering”: only the second developer’s changes survive.
Versions vs. Configurations (Traditional) Files exist in multiple  versions Sequences of updates over time Parallel variants  Systems exist in multiple  configurations For different platforms For different customers For different functionality/pricing levels Foo.java  (1.1) Foo.java  (1.2) Foo.java  (1.3) Foo.java  (1.4) Foo.java  (1.5) Foo.java  (1.2.1) Foo.java  (1.2.2) Bar.java  (1.1) Bar.java  (1.2) Bar.java  (1.3) 1.0.0 1.0.1 1.1.0
Version Control  Version control systems support: Multiple versions of a file Multiple paths of file revision Locking to prevent two people from modifying the same file at the same time Recovery of any prior version of a file Efficient storage via  “deltas” (forward or backward) Foo.java  (1.1) Foo.java  (1.2) Foo.java  (1.3) Foo.java  (1.4) Foo.java  (1.5) Foo.java  (1.2.1) Foo.java  (1.2.2) Branch Merge
RCS: Revision Control System When foo.java is put under RCS control, a new file called RCS/foo.java,v is created that represents: The most recent version of foo.java Backward deltas allowing reconstruction of any older version of the file in space-efficient manner. Information on who has a lock on the file (if anyone) For details, download, etc: http://www.gnu.org/software/rcs/
 
Example RCS Commands % ci foo.java Submit foo.java for version control, or submit updated version. Creates RCS/foo.java,v Deletes foo.java Prompts you to supply a string documenting updates. % co foo.java Obtain read only copy of latest version of foo.java. % co –l foo.java Request a lock so file is read/write % rcsmerge –r1.4 –r1.2.2 foo.java Merge multiple versions into one file % rcsdiff –r1.4 –r1.2.2 foo.java See differences between versions 1.4 and 1.2.2
RCS and the 3 CM Problems The double maintenance problem RCS provides a repository with a single  “master copy” of each file. The shared data problem Multiple developers can access the directory containing the checked out version of the file. The simultaneous update problem To edit a file, a developer must obtain a lock. RCS changes file permissions/ownership to implement the lock.
RCS Summary Free, open source, former  “industry standard” Easy to install and setup. Non-GUI, unix-based, command line interface. Provides version control, not configuration management. All developers must access the same (Unix) file system to solve double maintenance and shared data problems. Locking is  “pessimistic” Leads to many emails with  “Please release lock on file foo.java.”
CVS: Concurrent Versions System Uses RCS as backend for version control, adds configuration management support. Client-server architecture enables: checkin and checkout over Internet Developers do not need to access single (Unix) file system “ Optimistic” locking  Multiple developers can modify same file simultaneously. At checkin, any  “merge conflicts” are detected and given to developers to resolve. Versions and configurations still on a  “per-file” basis SVN will take a different approach.
 
Basic steps for CVS Administrator sets up CVS server and provides developers with CVS accounts and passwords.  Developers configure their workstations with CVS repository location, account, and password information. Basic development cycle: Check out  a copy of system to your computer. Edit files locally.  Commit  your changes to repository when ready. Update  your local code tree to synchronize it with repository when desired. Address  merge conflicts  as they occur. Tag  a set of file versions to create a configuration when ready to release.
CVS and the 3 CM problems The double maintenance problem CVS uses RCS to provide a repository with a single  “master copy” of each file. The shared data problem Multiple developers can create local copies of the master copy to work on.  The simultaneous update problem Multiple developers  can  edit a file simultaneously! File clobbering is prevented by CVS notifying a developer when an attempt to commit creates  “merge conflicts”. CVS creates a  “merged” file with all changes.
CVS Summary Free, open source, recent  “industry standard” Centralized server architecture Non-trivial to install server; security issues. GUI and CLI clients available for many platforms. Provides version control and configuration management but not: Build system Defect tracking Change management Automated testing  Optimistic locking creates work during merge.
Subversion Designed as a "compelling replacement" for CVS.  CVS code base old and crufty. File-based versions create problems. The current  “industry standard” Similar to CVS in many respects (checkout, commit, optimistic locking) Some major differences: Back-end repository not files, but a DB. Versions are not file-based, but repository-wide. "Directory" based tags and branches. Arbitrary metadata. Downloads, etc: http://subversion.tigris.org
 
SVN vs. CVS in a nutshell Repository:  CVS uses flat files; SVN uses BerkeleyDB Speed: SVN is faster. Tags and Branches: CVS uses metadata; SVN uses folder conventions File Types: CVS designed for ASCII, supports binary via 'hacks'; SVN handles all types uniformly. Transactional commit: SVN supports; CVS does not. Deletion and renaming: CVS support is bogus; SVN support is good. Popularity: Most popular for new projects, but Git is gaining!
Git A distributed version control system.  multiple redundant repositories  branching is a  “first class concept” Every user has a complete copy of the repository (including history) stored locally.  No  “commit access”. Instead, you decide which users repositories to merge with your own.  See Linus Torvalds talk on Git on YouTube. Mercurial is similar to Git.
 
Git vs. SVN Advantages of Git: Most operations much faster. Git requires much less storage than SVN. Git supports decentralized development. No need for a  “czar” More workflows possible than with SVN Advantages of SVN: Centralized repository means you know where the code is. Access control possible. Sometimes a  “czar” is helpful for project coordination.
Yet More CM Alternatives Bazaar (bzr): Decentralized configuration management P2P, not centralized server Individuals publish branches to a web server. BitKeeper: Decentralized Not open source!  ClearCase, Visual Source Safe, etc. Commercial, costly solutions. Include additional services (workflow, issue tracking, etc.)
 

More Related Content

PPTX
Introduction to CI/CD
Steve Mactaggart
 
PDF
Domain Driven Design (Ultra) Distilled
Nicola Costantino
 
PDF
Keycloak SSO basics
Juan Vicente Herrera Ruiz de Alejo
 
PPTX
Code review
Abhishek Sur
 
ODP
An Introduction To Jenkins
Knoldus Inc.
 
PPTX
Jenkins CI presentation
Jonathan Holloway
 
PPTX
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
PPTX
Intro to Azure DevOps
Lorenzo Barbieri
 
Introduction to CI/CD
Steve Mactaggart
 
Domain Driven Design (Ultra) Distilled
Nicola Costantino
 
Code review
Abhishek Sur
 
An Introduction To Jenkins
Knoldus Inc.
 
Jenkins CI presentation
Jonathan Holloway
 
Modern CI/CD Pipeline Using Azure DevOps
GlobalLogic Ukraine
 
Intro to Azure DevOps
Lorenzo Barbieri
 

What's hot (20)

PDF
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Edureka!
 
PPTX
Tour of Azure DevOps
Callon Campbell
 
PDF
Kubernetes 101
Winton Winton
 
PPTX
Dependency injection presentation
Ahasanul Kalam Akib
 
PPT
Domain Driven Design (DDD)
Tom Kocjan
 
PPTX
OpenID Connect and Single Sign-On for Beginners
Salesforce Developers
 
PDF
Documenting Software Architectures
Paulo Gandra de Sousa
 
PPT
Introduction To Software Configuration Management
Rajesh Kumar
 
PDF
Paravirtualization
Shahbaz Sidhu
 
PPTX
Microservices
SmartBear
 
PDF
CI/CD (DevOps) 101
Hazzim Anaya
 
PPTX
Dev ops != Dev+Ops
Shalu Ahuja
 
PDF
Tips For Building Private Cloud Architecture With Virtualization
Aventis Systems, Inc.
 
PPTX
CICD with Jenkins
MoogleLabs default
 
PDF
Event Driven Architecture (EDA) Reference Architecture | Anbu Krishnaswamy
Bob Rhubart
 
PDF
Roles and Responsibilities of a DevOps Engineer
ZaranTech LLC
 
PDF
DevOps Best Practices
Giragadurai Vallirajan
 
PPTX
Software Configuration Management
JeyanthiR
 
PPTX
CI/CD Overview
An Nguyen
 
PDF
Azure DevOps - Azure Guatemala Meetup
Guillermo Zepeda Selman
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Edureka!
 
Tour of Azure DevOps
Callon Campbell
 
Kubernetes 101
Winton Winton
 
Dependency injection presentation
Ahasanul Kalam Akib
 
Domain Driven Design (DDD)
Tom Kocjan
 
OpenID Connect and Single Sign-On for Beginners
Salesforce Developers
 
Documenting Software Architectures
Paulo Gandra de Sousa
 
Introduction To Software Configuration Management
Rajesh Kumar
 
Paravirtualization
Shahbaz Sidhu
 
Microservices
SmartBear
 
CI/CD (DevOps) 101
Hazzim Anaya
 
Dev ops != Dev+Ops
Shalu Ahuja
 
Tips For Building Private Cloud Architecture With Virtualization
Aventis Systems, Inc.
 
CICD with Jenkins
MoogleLabs default
 
Event Driven Architecture (EDA) Reference Architecture | Anbu Krishnaswamy
Bob Rhubart
 
Roles and Responsibilities of a DevOps Engineer
ZaranTech LLC
 
DevOps Best Practices
Giragadurai Vallirajan
 
Software Configuration Management
JeyanthiR
 
CI/CD Overview
An Nguyen
 
Azure DevOps - Azure Guatemala Meetup
Guillermo Zepeda Selman
 
Ad

Similar to Introduction to Version Control and Configuration Management (20)

PPT
SVN Usage & Best Practices
Ashraf Fouad
 
PPTX
Subversion
Murtaza Abbas
 
PDF
How to use CVS applied to SOLab
Pablo Arriazu
 
PPT
FlashInTO SVN Presentation
Matthew Fabb
 
PDF
Version control with Subversion
O. R. Kumaran
 
PPTX
SVN Tutorial
enggHeads
 
PPT
Subversion
wiradikusuma
 
PPT
Version Control
Kivanc Kanturk
 
PDF
Digital Fabrication Studio 0.3 Information
Massimo Menichinelli
 
PPT
Part 4 - Managing your svn repository using jas forge
Jasmine Conseil
 
ODP
Introduction to Version Control
Jeremy Coates
 
ODP
Practical SVN for PHP Developers
Lorna Mitchell
 
PPTX
Slide set 7 (Source Code Management History Overview) - Copy.pptx
UTKARSHBHARDWAJ71
 
PPT
Subversion (SVN)
manugoel2003
 
PDF
IRJET-Evolution of Version Control Systems and a Study on Tortoisesvn
IRJET Journal
 
PPTX
Version Control Training - First Lego League
Jeffrey T. Pollock
 
PDF
Digital Fabrication Studio v.0.2: Information
Massimo Menichinelli
 
PPT
Subversion on .Unix
Trong Dinh
 
PPT
Subversion on .Unix
Trong Dinh
 
ODP
Jbossworld Presentation
Dan Hinojosa
 
SVN Usage & Best Practices
Ashraf Fouad
 
Subversion
Murtaza Abbas
 
How to use CVS applied to SOLab
Pablo Arriazu
 
FlashInTO SVN Presentation
Matthew Fabb
 
Version control with Subversion
O. R. Kumaran
 
SVN Tutorial
enggHeads
 
Subversion
wiradikusuma
 
Version Control
Kivanc Kanturk
 
Digital Fabrication Studio 0.3 Information
Massimo Menichinelli
 
Part 4 - Managing your svn repository using jas forge
Jasmine Conseil
 
Introduction to Version Control
Jeremy Coates
 
Practical SVN for PHP Developers
Lorna Mitchell
 
Slide set 7 (Source Code Management History Overview) - Copy.pptx
UTKARSHBHARDWAJ71
 
Subversion (SVN)
manugoel2003
 
IRJET-Evolution of Version Control Systems and a Study on Tortoisesvn
IRJET Journal
 
Version Control Training - First Lego League
Jeffrey T. Pollock
 
Digital Fabrication Studio v.0.2: Information
Massimo Menichinelli
 
Subversion on .Unix
Trong Dinh
 
Subversion on .Unix
Trong Dinh
 
Jbossworld Presentation
Dan Hinojosa
 
Ad

More from Philip Johnson (20)

PPTX
Kukui Cup 2012 Energy Data
Philip Johnson
 
PPTX
Introduction to ICS 691: Software Engineering for the Smart Grid
Philip Johnson
 
PPTX
Kukui Cup 2012 Organizing Committee February Meeting
Philip Johnson
 
PPTX
How to plan a Kukui Cup
Philip Johnson
 
PPT
Honors thesis overview: Katie Amberg-Johnson
Philip Johnson
 
PPT
Introduction to Issue Driven Project Management
Philip Johnson
 
PPT
Introduction to continuous integration
Philip Johnson
 
PPT
Introduction to WattDepot
Philip Johnson
 
PPT
Introduction to Subversion and Google Project Hosting
Philip Johnson
 
PPT
A beginners guide to testing
Philip Johnson
 
PPT
Introduction to automated quality assurance
Philip Johnson
 
PPT
Introduction to Software Build Technology
Philip Johnson
 
PPT
Introduction to Software Review
Philip Johnson
 
PPT
Introduction to Robocode
Philip Johnson
 
PPT
Codings Standards
Philip Johnson
 
PPT
Interactive Development Environments
Philip Johnson
 
PPT
Introduction to Intermediate Java
Philip Johnson
 
PPT
Professional Persona
Philip Johnson
 
PPT
01.intro
Philip Johnson
 
PPTX
iHale Milestone 2 Kickoff
Philip Johnson
 
Kukui Cup 2012 Energy Data
Philip Johnson
 
Introduction to ICS 691: Software Engineering for the Smart Grid
Philip Johnson
 
Kukui Cup 2012 Organizing Committee February Meeting
Philip Johnson
 
How to plan a Kukui Cup
Philip Johnson
 
Honors thesis overview: Katie Amberg-Johnson
Philip Johnson
 
Introduction to Issue Driven Project Management
Philip Johnson
 
Introduction to continuous integration
Philip Johnson
 
Introduction to WattDepot
Philip Johnson
 
Introduction to Subversion and Google Project Hosting
Philip Johnson
 
A beginners guide to testing
Philip Johnson
 
Introduction to automated quality assurance
Philip Johnson
 
Introduction to Software Build Technology
Philip Johnson
 
Introduction to Software Review
Philip Johnson
 
Introduction to Robocode
Philip Johnson
 
Codings Standards
Philip Johnson
 
Interactive Development Environments
Philip Johnson
 
Introduction to Intermediate Java
Philip Johnson
 
Professional Persona
Philip Johnson
 
01.intro
Philip Johnson
 
iHale Milestone 2 Kickoff
Philip Johnson
 

Recently uploaded (20)

PPT
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
PDF
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
DOCX
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Software Development Company | KodekX
KodekX
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
PDF
agentic-ai-and-the-future-of-autonomous-systems.pdf
siddharthnetsavvies
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PPTX
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
PDF
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
Doc9.....................................
SofiaCollazos
 
Software Development Company | KodekX
KodekX
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
agentic-ai-and-the-future-of-autonomous-systems.pdf
siddharthnetsavvies
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 

Introduction to Version Control and Configuration Management

  • 1. Introduction to Version Control and Configuration Management Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu HI 96822
  • 2. Objectives Understand motivation for configuration management technologies. Be able to download/install/use a SVN client. Be able to use SVN for configuration management of your course project.
  • 3. Why do we care Software is written: As a combination of modules In one or more languages For one or more applications Using one or more libraries Things that may (will) change over time: The modules required and used The languages employed The application requirements The libraries Each change could cause the system to break.
  • 4. You know you have a CM problem when… “ But the system was working fine yesterday! What happened?” “ But I can’t reproduce your bug in my copy of the system!” “ But I already corrected that code last week! What happened to my fix?” “ I wonder if that bug was fixed in this copy too?”
  • 5. CM Defined Configuration management attempts to identify and track all relevant elements of the configuration of a system, so that all possible errors can be identified, and possible solutions to the problems found. Version control is a special case of configuration management, where we are concerned with maintaining multiple versions of a software system. Defect tracking systems monitor the status of error reports from first identification to resolution. Defect tracking relates to CM because defects occur as a result of changes, and defect removal typically requires a change in configuration.
  • 6. The Three Classic CM Problems Any configuration management approach must address at least the following “classic” problems: The double maintenance problem Must prevent occurrence of multiple copies of the same file that must be independently updated. The shared data problem Must allow two or more developers to access the same file/data. The simultaneous update problem Must prevent “clobbering” when two developers update the same file at the same time. “ clobbering”: only the second developer’s changes survive.
  • 7. Versions vs. Configurations (Traditional) Files exist in multiple versions Sequences of updates over time Parallel variants Systems exist in multiple configurations For different platforms For different customers For different functionality/pricing levels Foo.java (1.1) Foo.java (1.2) Foo.java (1.3) Foo.java (1.4) Foo.java (1.5) Foo.java (1.2.1) Foo.java (1.2.2) Bar.java (1.1) Bar.java (1.2) Bar.java (1.3) 1.0.0 1.0.1 1.1.0
  • 8. Version Control Version control systems support: Multiple versions of a file Multiple paths of file revision Locking to prevent two people from modifying the same file at the same time Recovery of any prior version of a file Efficient storage via “deltas” (forward or backward) Foo.java (1.1) Foo.java (1.2) Foo.java (1.3) Foo.java (1.4) Foo.java (1.5) Foo.java (1.2.1) Foo.java (1.2.2) Branch Merge
  • 9. RCS: Revision Control System When foo.java is put under RCS control, a new file called RCS/foo.java,v is created that represents: The most recent version of foo.java Backward deltas allowing reconstruction of any older version of the file in space-efficient manner. Information on who has a lock on the file (if anyone) For details, download, etc: http://www.gnu.org/software/rcs/
  • 10.  
  • 11. Example RCS Commands % ci foo.java Submit foo.java for version control, or submit updated version. Creates RCS/foo.java,v Deletes foo.java Prompts you to supply a string documenting updates. % co foo.java Obtain read only copy of latest version of foo.java. % co –l foo.java Request a lock so file is read/write % rcsmerge –r1.4 –r1.2.2 foo.java Merge multiple versions into one file % rcsdiff –r1.4 –r1.2.2 foo.java See differences between versions 1.4 and 1.2.2
  • 12. RCS and the 3 CM Problems The double maintenance problem RCS provides a repository with a single “master copy” of each file. The shared data problem Multiple developers can access the directory containing the checked out version of the file. The simultaneous update problem To edit a file, a developer must obtain a lock. RCS changes file permissions/ownership to implement the lock.
  • 13. RCS Summary Free, open source, former “industry standard” Easy to install and setup. Non-GUI, unix-based, command line interface. Provides version control, not configuration management. All developers must access the same (Unix) file system to solve double maintenance and shared data problems. Locking is “pessimistic” Leads to many emails with “Please release lock on file foo.java.”
  • 14. CVS: Concurrent Versions System Uses RCS as backend for version control, adds configuration management support. Client-server architecture enables: checkin and checkout over Internet Developers do not need to access single (Unix) file system “ Optimistic” locking Multiple developers can modify same file simultaneously. At checkin, any “merge conflicts” are detected and given to developers to resolve. Versions and configurations still on a “per-file” basis SVN will take a different approach.
  • 15.  
  • 16. Basic steps for CVS Administrator sets up CVS server and provides developers with CVS accounts and passwords. Developers configure their workstations with CVS repository location, account, and password information. Basic development cycle: Check out a copy of system to your computer. Edit files locally. Commit your changes to repository when ready. Update your local code tree to synchronize it with repository when desired. Address merge conflicts as they occur. Tag a set of file versions to create a configuration when ready to release.
  • 17. CVS and the 3 CM problems The double maintenance problem CVS uses RCS to provide a repository with a single “master copy” of each file. The shared data problem Multiple developers can create local copies of the master copy to work on. The simultaneous update problem Multiple developers can edit a file simultaneously! File clobbering is prevented by CVS notifying a developer when an attempt to commit creates “merge conflicts”. CVS creates a “merged” file with all changes.
  • 18. CVS Summary Free, open source, recent “industry standard” Centralized server architecture Non-trivial to install server; security issues. GUI and CLI clients available for many platforms. Provides version control and configuration management but not: Build system Defect tracking Change management Automated testing Optimistic locking creates work during merge.
  • 19. Subversion Designed as a "compelling replacement" for CVS. CVS code base old and crufty. File-based versions create problems. The current “industry standard” Similar to CVS in many respects (checkout, commit, optimistic locking) Some major differences: Back-end repository not files, but a DB. Versions are not file-based, but repository-wide. "Directory" based tags and branches. Arbitrary metadata. Downloads, etc: http://subversion.tigris.org
  • 20.  
  • 21. SVN vs. CVS in a nutshell Repository: CVS uses flat files; SVN uses BerkeleyDB Speed: SVN is faster. Tags and Branches: CVS uses metadata; SVN uses folder conventions File Types: CVS designed for ASCII, supports binary via 'hacks'; SVN handles all types uniformly. Transactional commit: SVN supports; CVS does not. Deletion and renaming: CVS support is bogus; SVN support is good. Popularity: Most popular for new projects, but Git is gaining!
  • 22. Git A distributed version control system. multiple redundant repositories branching is a “first class concept” Every user has a complete copy of the repository (including history) stored locally. No “commit access”. Instead, you decide which users repositories to merge with your own. See Linus Torvalds talk on Git on YouTube. Mercurial is similar to Git.
  • 23.  
  • 24. Git vs. SVN Advantages of Git: Most operations much faster. Git requires much less storage than SVN. Git supports decentralized development. No need for a “czar” More workflows possible than with SVN Advantages of SVN: Centralized repository means you know where the code is. Access control possible. Sometimes a “czar” is helpful for project coordination.
  • 25. Yet More CM Alternatives Bazaar (bzr): Decentralized configuration management P2P, not centralized server Individuals publish branches to a web server. BitKeeper: Decentralized Not open source! ClearCase, Visual Source Safe, etc. Commercial, costly solutions. Include additional services (workflow, issue tracking, etc.)
  • 26.