Introduction to Version Control and Configuration ManagementPresentation Transcript
Introduction to Version Control and Configuration Management Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu HI 96822
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
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?”
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.