CSC/ECE 517 Fall 2009/wiki1a 1 aa
Distributed Version Control
Distributed Version Control (DVC or DVCS) is one way to manage or control revisions of a software package. Unlike the closely related Version Control Systems (VCS), DVC utilizes a peer-to-peer approach rather than a client-server approach.[2] When a developer checks out a project from the main repository, they will have their very own copy or clone of the repository. This allows the developer to commit many revisions to their repository before committing to the main or centralized repository used by the entire development team.
History
Revision control is a vital part of software development. The most widely-used revision control is Version Control Systems such as Subversion or CVS. However, many developers have noticed inadequacies in current VCS tools. Such inadequacies include a need to work disconnected or offline and a desire for increased administrative flexibility. Distributed Version Control overcomes those shortfalls by implementing distributed repositories which are complete with revision history.
Advantages
DVC has several advantages over VCS. This list is in no way comprehensive.
1. Developers can work offline being able to view the complete revision history and braches. Commits, rollbacks, and revision diffs are possible without being connected to a network.[5]
2. Individuals have autonomy as to which revisions are committed to their local repository. The developers do not have to go through a central point of authority before making a change.[1]
3. At any time, a developer can get back to specific individual revisions. This means that if code breaks once the individual revisions have been pushed to the base repository, there is a way to rollback to an individual revision that worked. This is not typically possible when there is one centralized repository.
4. Less time is spent figuring out how to undo a merge that caused code to break. Because of the previously listed advantage, developers can spend more time on functions that are really important rather than playing detective.[5]
5. The base repository remains more settled. Again, because of the two previous advantages, the base repository does not get shaken up as often as a centralized repository in a VCS.[6]
6. Developers using such methods as eXtreme or pair programming can collaborate more freely. It is easy for a small group of developers to pull revisions from others that is specific to one feature without having to get an entire team’s changes for the complete system.[6]
Disadvantages
Just as there are several advantages to using Distributed Version Control, there are also disadvantages. Again, this list is in no way comprehensive.
1. VCS provides one working version of the software even throughout a maintenance cycle. DVC has many smaller working versions, but not a central one.[4]
2. DVC is immature. Therefore, there are many different groups offering many options but with few standards in place. [3]
3. Third party support is not readily available. This is due to the lack of maturity and rapid changes that are currently happening with the DVC products.[3]
External Links
1. Wikipedia: Distributed Revision Control
2. Wikipedia: Revision Control
3. John Arbash Meinel's Bazaar Blog: Bazaar vs Subversion
4. Intro to Distributed Version Control (Illustrated)
5. Wincent Colaiuta's weblog: Why distributed version control