Distributed revision control
From Wikipedia, the free encyclopedia
This article includes a list of references or external links, but its sources remain unclear because it lacks inline citations. Please improve this article by introducing more precise citations where appropriate. (July 2008) |
This article may require cleanup to meet Wikipedia's quality standards. Please improve this article if you can. (November 2007) |
The lists in this article may contain items that are not notable, encyclopedic, or helpful. Please help out by removing such elements and incorporating appropriate items into the main body of the article. (January 2008) |
It has been suggested that this article or section be merged with revision control#Distributed revision control. (Discuss) |
Distributed revision control (or Distributed Version Control (Systems) (DVCS), or Decentralized Version Control) is a fairly recent innovation in software revision control. It provides some significant advantages over the more traditional centralized approach to revision control, and it has some defining characteristics that separate it from centralized systems. However, the line between distributed and centralized systems is blurring in some regards, especially since DVCSs can be used in a "centralized mode".
Contents |
[edit] vs. Centralised
This article may contain original research or unverified claims. Please improve the article by adding references. See the talk page for details. (January 2008) |
Comparisons are often made between centralized and distributed revision control:
[edit] Differences
- There may be many "central" repositories.
- Code from disparate repositories are merged based on a web of trust, i.e., historical merit or quality of changes.
- Lieutenants are project members who have the power to dynamically decide which branches to merge.
- Network is not involved in most operations.
- A separate set of "sync" operations are available for committing or receiving changes with remote repositories.
[edit] Advantages
- Allows users to work productively even when not connected to a network
- Makes most operations much faster since no network is involved
- Allows participation in projects without requiring permissions from project authorities, and thus arguably better fosters culture of meritocracy instead of requiring "committer" status.
- Allows private work, so you can use your revision control system even for early drafts you don't want to publish
- Avoids relying on a single physical machine. A server disk crash is a non-event with Distributed revision control
[edit] Disadvantages
- Concepts of DVCSs are more difficult for developers to grasp as they are required to know more about infrastructure.
- It's not possible to remove or change the whole history by only one party. This may be an issue for some companies, who would like to have full control over the history.
- A centralised server tends to be favored in corporate environment where access management and selective code visibility is more easily achieved; in this sense, tighter data security.
- There are no dedicated versions at one time, There are multiple variants.
[edit] Unclear
The following points are neither well documentated nor easily understandable:
- Will DVCS often require many more merge conflict resolution by hand efforts?
- Source code is considered the "crown jewels" of a software group. Centralized version control systems have been around much longer and thus perceived to be more stable.
- Some projects want or need centralized control.
- Distributed systems can end up with a person as the central point of control, rather than a server.
[edit] Work Model
The distributed model also impacts the traditional developer working model.
This section requires expansion. |
[edit] History
The first DVCS is Reliable Software's Code Co-op (1997). First generation DVCSes include Arch and Monotone. The second generation was prompted by the arrival of Darcs, followed by a host of others, including Mercurial, Bazaar, and Git.
See the List of revision control software for a more comprehensive list.
[edit] Future
Some natively centralized systems are starting to grow distributed features. For example, Subversion is able to do many operations with no network, and it is planning to implement local commits.[citation needed] It may become more difficult to separate natively distributed vs centralized systems.
Due to the explosion of new DVCSs in the last couple of years, it is likely that some of them will slow down or die off.
There are many tools that rely on version control, such as wikis, file systems, and text editors. Some are starting to adopt DVCS features, and even integrate with them. E.g., the Gazest wiki, ikiwiki. See Category:Software using distributed revision control.
[edit] See also
[edit] External links
- Essay on various revision control systems, especially the section "Centralized vs. Decentralized SCM"
- Linus Torvalds email describing DVCS to KDE developers
- Video of a talk Linus Torvalds gave about Git
- Bryan O'Sullivan video on Mercurial
- Ben Collins-Sussman (one of Subversion's authors) article on "The Risks of Distributed Version Control"
- Distributed Version Control Systems - Why and How by Ian Clatworthy, Bazaar/Canonical
- Software Development and Version Control systems. Emphasis on Distributed Version Control Systems (DVCS) by Jari Aalto