Distributed Concurrent Versions System
   HOME

TheInfoList



OR:

{{Infobox software , name = Distributed Concurrent Versions System , logo = , screenshot = , caption = , developer = elego Software Solutions GmbH , discontinued = yes , released = {{Start date and age, 2002, 08 , latest release version = 1.0.3 , latest release date = {{Start date and age, 2006, 09, 25 , latest preview version = , latest preview date = , operating system =
Unix-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
,
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ser ...
, platform = , programming language = C , genre =
Revision control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
, license =
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general ...
, website = {{URL, http://dcvs.elegosoft.com/ The Distributed Concurrent Versions System (DCVS) is a
distributed revision control In software development, distributed version control (also known as distributed revision control) is a form of version control in which the complete codebase, including its full history, is mirrored on every developer's computer. Compared to centr ...
system that enables software developers working on locally distributed sites to efficiently collaborate on a software project. DCVS is based on the well known version control system '' Concurrent Versions System''. The code is freely distributable under the GNU and BSD style licenses.


Motivation

CVS is based on a pure centralistic organizational model and offers very little offline support. Almost all version control operations require direct access to the ''
repository Repository may refer to: Archives and online databases * Content repository, a database with an associated set of data management tools, allowing application-independent access to the content * Disciplinary repository (or subject repository), an ...
''. Therefore worldwide distributed software development efforts face heavy performance problems when using CVS. DCVS tackles this issue by distributing the central CVS repository on many sites.


Features

DCVS provides all CVS functionality. But unlike CVS a DCVS system may comprise an arbitrary number of geographically distributed repositories whose contents are kept equal in the background by an extended version of '' CVSup'', a program developed by John D. Polstra. The combination of ''DCVS repository'', extended ''CVSup server'' and ''DCVS server program'' will be called ''DCVS server'' in the following paragraphs. All contents of all development lines can be ''checked out'' from any of the DCVS servers into a ''DCVS workspace'' owned by a developer. All operations that do not modify the repository, such as ''
diff In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but ...
'', ''
patch Patch or Patches may refer to: Arts, entertainment and media * Patch Johnson, a fictional character from ''Days of Our Lives'' * Patch (''My Little Pony''), a toy * "Patches" (Dickey Lee song), 1962 * "Patches" (Chairmen of the Board song) ...
'', ''log'', ''annotate'' etc., work just like in CVS, but they always use the local repository and so are much faster in a distributed scenario. In order to avoid collisions and data loss every DCVS server gets assigned a set of development lines (DCVS branches) for which it is responsible. Modifications to a branch may only be checked in on the server which is responsible for the branch. The separation of modifications by lines of development makes it possible to automatically transfer and distribute changes in the DCVS network. A person wanting to commit changes for a development line that his local DCVS server is not responsible for can create a new development line (branch) and commit the changes to it. The local server is automatically responsible for any newly created line of development. On the other hand, every developer can merge changes from development lines his local DCVS server is not responsible for into local development lines. Thus all changes made at any working site may be applied to the original branch by developers on the responsible DCVS server performing a ''
merge Merge, merging, or merger may refer to: Concepts * Merge (traffic), the reduction of the number of lanes on a road * Merge (linguistics), a basic syntactic operation in generative syntax in the Minimalist Program * Merger (politics), the comb ...
'' operation. The functionality of '' change sets'' enables developers to produce small sets of changes related to a feature or a defect, which can then be applied by others. A specific numbering scheme ensures that development lines and deltas can be identified as belonging to a certain DCVS server. DCVS assigns a unique ''
range Range may refer to: Geography * Range (geographic), a chain of hills or mountains; a somewhat linear, complex mountainous or hilly area (cordillera, sierra) ** Mountain range, a group of mountains bordered by lowlands * Range, a term used to i ...
'' of branch numbers to every pair (server/collection). All ranges for all servers and collections must be mutually exclusive. The definitions for servers, collections, and ranges are read from a single configuration file. By consulting the contents of this file, every DCVS server can decide if it is responsible for a certain branch or delta of a given file. If so, all modifying operations are allowed; if not, modifying operations are only possible on the appropriate remote server. Also the actual names of configurations, the '' tags'', are uniquely assigned to exactly one DCVS server by means of a server-specific suffix extending all ''tags'' (i. e. _at_dcvs_mydomain_org). Thus no conflicts in the tag name space may arise.


History

DCVS has been developed by team members of Elego Software Solutions GmbH in Berlin/Germany. The first release of DCVS was in August 2002. In November 2005 version 1.0.2 was released.


External links


CVS for distributed development (Elego)The DCVS repositoryGNU Concurrent Versions SystemThe CVS-Optimized General-Purpose Network File Distribution System CVSupWANdisco for CVS Transactional Multisite System
Concurrent Versions System