Lecture 13: Configuration Management and Subversion
Today's Lecture
- Configuration Management
- Subversion
Review of Versioning
- Versioning involves
- tracking the changes to a file between editing sessions
- providing services that make each version persistent and retrievable
- providing support for complex dependencies between versions such as extensions, splits, and merges
- Note: the emphasis is on a single file
- What about collections of files?
Configuration Management
- Versioning a collection of files is known as configuration management
- A collection can occur at many levels of granularity
- the collection of files that make up a module
- the collection of files that make up a library
- the collection of files that make up a subsystem
- etc.
- NOTE: each file is still individually versioned, but now we can track the configuration to which a particular version belongs
Relationship of Versioning to Configuration Management
- Recall from last lecture, how the version number of a file had nothing to do with the release number of the entire software system?

- The release number is the version number of a configuration!
- I was also pretending last lecture that somehow this single file represented your entire software system.
Configuration Management Example

Configuration Management, continued
- Configurations become first-class objects that can be manipulated by explicit commands
- (Versions of ) Files can be added/removed from configurations
- Configurations can be checked in and checked out
- This helps with bug tracking, if a customer reports a bug on release 1.3, the software engineer can check out a clean copy of release 1.3 without affecting the current release
- Each developer can have their own copy of a configuration; changes to a configuration are handled similarly to changes to individual files
- Configurations can be automatically built and packaged for deployment
Configuration Management Tools
- Unfortunately, most configuration management tools are commercial systems
- ClearCase, Continuus (now Telelogic SYNERGY), Razor, TrueChange
- Tools like RCS, CVS, and Subversion (which are freely available) are versioning systems (so that's what we will look at)
- CVS and Subversion have only one feature that provides a configuration management-like capability
- Its called “tags” and it allows you to tag a particular version of a file with a release number…
- … but that’s it! It does not have an explicit notion of collections that can be versioned independent of its individual files
- Still, we will look at Subversion in more detail to see how it (and CVS before it) made it easier to deal with groups of files when compared to what RCS provides
Demo
- Quick tour of Subversion (svn)
- Creating Repository
- Importing an existing project
- Checking out a local copy
- Modifying the local copy
- Committing Changes
- Retrieving information about the repository
- Tool Integration
- Simulating a conflict
- Tagging a release
- Creating a branch and making changes on the branch
- Merging a branch back into the main development trunk
- Subversion at a distance
- Note: you will learn more about subversion in Lab 3
- You can also read the book for documentation on specific commands
Coming Up Next
- Lecture 14: Midterm Review
- Homework 6 Due
- Lab 3 Assigned
- Midterm: One week from today!!!