| Umbrello UML Modeller: A Diagramming Programme for the Unified Modelling Language Developed Using Bazaar Methods; BSc Honuors Dissertation, Final Report; University of Stirling, Department of Computing Science and Mathematics; April 2003 | ||
|---|---|---|
| Prev | Chapter 4. Project Tools | Next |
CVS (Concurrent Versions System) is a fundamental tool used by almost all openly developed programmes. It is a client/server based revision control tool which stores files in a repository on the server. The files are checked out by developers to their local machines where they are edited, then the changes are committed back to the repository. It allows multiple developers to work on the same files at the same time by intelligently merging commits into the repository or, the other way, updates from the repository into local files a developer has already edited.
As a revision controller it allows previous versions of files to be checked out and any changes can be easily reverted. This is useful for tracing bugs, by going through previous versions it is possible to track down what commit introduced the bug.
Shortly after I took control of Umbrello I setup CVS to send information on any commits made on the repository to the developer mailing list. This has proved invaluable in tracking the work done by developers. Previously any commits had to be either announced manually on the mailing list or caught by chance while viewing the web CVS interface. I also imposed a rule that all commits must have a descriptive comment (previously most commits had no comment at all). The CVS e-mails complement the discussion e-mails to the mailing list and ensures everyone knows what has been happening to the code base.
One other feature I made use of in CVS is revision tagging. Whenever I make a release of Umbrello the files are tagged with that version number (for example UMBRELLO_1_1_BETA_1_TAG). The tag can then be used to refer to a release if someone wants to get the source of it out of CVS, or more usually to compare one or more files from that version with the current CVS.
A limitation of CVS is that commits of several files are not atomic: if a commit fails half way through uploading some files the repository will be in an inconsistent state, which is what had happened when I first became administrator for Umbrello.
diff and patch are two vital tools for sharing modifications with others. diff extracts the difference between two files in an easily human and computer readable format and patch merges a diff file with the original file. CVS makes use of these programmes when comparing local files to those held in a repository and it can also be used to create correctly configured diff files.