CSC/ECE 517 Fall 2009/wiki1a 1 aa: Difference between revisions
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Distributed Version Control == | == 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.[[http://en.wikipedia.org/wiki/Revision_control 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. | Distributed Version Control (DVC or DVCS) is one way to manage or control revisions of a software package. Unlike the closely related [http://en.wikipedia.org/wiki/Version_control_system Version Control Systems] (VCS), DVC utilizes a peer-to-peer approach rather than a client-server approach.[[http://en.wikipedia.org/wiki/Revision_control 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 == | == History == | ||
Revision control is a vital part of software development. The most widely-used revision control is Version Control Systems such as [http://subversion.tigris.org/ Subversion] or [http://www.wincvs.org/ 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. | |||
== Pictorial Overview of Revision Control == | |||
Using the idea of making an omelet, this image shows how a team of developers would work on the project using VCS. | |||
[[Image:VCSOverview.jpg]] | |||
Using the same idea of the omelet, this image shows how a team would work on the project using DVC. | |||
[[Image:DVCOverview.jpg]] | |||
== Advantages == | == Advantages == | ||
DVC has several advantages over VCS. This list | DVC has several advantages over VCS tools such as Subversion and CVS. Therefore, it is becoming an attractive alternative for revision control. This list summarizes some of the features that DVC includes that VCS does not. However, the list is in no way comprehensive. | ||
1. Developers can work offline being able to view the complete revision history and branches. Commits, rollbacks, and revision diffs are possible without being connected to a network.[[http://wincent.com/a/about/wincent/weblog/archives/2007/10/why_distributed.php 5]] | 1. Developers can work offline being able to view the complete revision history and [http://en.wikipedia.org/wiki/Revision_control#Common_vocabulary branches]. [http://en.wikipedia.org/wiki/Revision_control#Common_vocabulary Commits], rollbacks (restoring code to a previous state), and revision diffs (differences between two revisions) are possible without being connected to a network.[[http://wincent.com/a/about/wincent/weblog/archives/2007/10/why_distributed.php 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.[[http://en.wikipedia.org/wiki/Distributed_revision_control 1]] | 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.[[http://en.wikipedia.org/wiki/Distributed_revision_control 1]] | ||
Line 25: | Line 32: | ||
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.[[http://ianclatworthy.files.wordpress.com/2007/10/dvcs-why-and-how3.pdf 6]] | 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.[[http://ianclatworthy.files.wordpress.com/2007/10/dvcs-why-and-how3.pdf 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.[[http://ianclatworthy.files.wordpress.com/2007/10/dvcs-why-and-how3.pdf 6]] | 6. Developers using such methods as [http://en.wikipedia.org/wiki/Extreme_programming eXtreme] or [http://en.wikipedia.org/wiki/Pair_programming 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.[[http://ianclatworthy.files.wordpress.com/2007/10/dvcs-why-and-how3.pdf 6]] | ||
== Disadvantages == | == Disadvantages == | ||
Just as there are several advantages to using Distributed Version Control, there are also disadvantages. Again, this list is in no way comprehensive. | Just as there are several advantages to using Distributed Version Control, there are also disadvantages or reasons why some developers continue to choose VCS over DVC. Again, this list is in no way comprehensive but does provide a few disadvantages. | ||
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.[[http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ 4]] | 1. VCS provides one working version of the software even throughout a maintenance cycle. DVC has many smaller, disjointed working versions, but not a central one. [[http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ 4]] | ||
2. DVC is immature. Therefore, there are many different groups offering many options but with few standards in place. [[http://jam-bazaar.blogspot.com/2007/10/bazaar-vs-subversion.html 3]] | 2. DVC is immature. Therefore, there are many different groups offering many options but with few standards in place. [[http://jam-bazaar.blogspot.com/2007/10/bazaar-vs-subversion.html 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.[[http://jam-bazaar.blogspot.com/2007/10/bazaar-vs-subversion.html 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. [[http://jam-bazaar.blogspot.com/2007/10/bazaar-vs-subversion.html 3]] | ||
== See also == | |||
[http://en.wikipedia.org/wiki/List_of_revision_control_software List of Revision Control Software] | |||
[http://en.wikipedia.org/wiki/Comparison_of_revision_control_software Comparison of Revision Control Software] | |||
== External Links == | == External Links == | ||
Line 51: | Line 64: | ||
6. [http://ianclatworthy.files.wordpress.com/2007/10/dvcs-why-and-how3.pdf Distributed Version Control Systems - Why and How] | 6. [http://ianclatworthy.files.wordpress.com/2007/10/dvcs-why-and-how3.pdf Distributed Version Control Systems - Why and How] | ||
7. [http://en.wikipedia.org/wiki/Revision_control#Common_vocabulary Wikipedia: Revision Control Common Vocabulary] |
Latest revision as of 12:17, 17 September 2009
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.
Pictorial Overview of Revision Control
Using the idea of making an omelet, this image shows how a team of developers would work on the project using VCS.
Using the same idea of the omelet, this image shows how a team would work on the project using DVC.
Advantages
DVC has several advantages over VCS tools such as Subversion and CVS. Therefore, it is becoming an attractive alternative for revision control. This list summarizes some of the features that DVC includes that VCS does not. However, the list is in no way comprehensive.
1. Developers can work offline being able to view the complete revision history and branches. Commits, rollbacks (restoring code to a previous state), and revision diffs (differences between two revisions) 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 or reasons why some developers continue to choose VCS over DVC. Again, this list is in no way comprehensive but does provide a few disadvantages.
1. VCS provides one working version of the software even throughout a maintenance cycle. DVC has many smaller, disjointed 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]
See also
List of Revision Control Software
Comparison of Revision Control Software
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