Distributed Concurrent Versions System

Last updated
Distributed Concurrent Versions System
Developer(s) elego Software Solutions GmbH
Initial releaseAugust 2002;21 years ago (2002-08)
Final release
1.0.3 / September 25, 2006;17 years ago (2006-09-25)
Written in C
Operating system Unix-like, Windows
Type Revision control
License GNU General Public License
Website dcvs.elegosoft.com

The Distributed Concurrent Versions System (DCVS) was a distributed revision control system that enables software developers working on locally distributed sites to efficiently collaborate on a software project. DCVS was based on the well known version control system Concurrent Versions System . The code was freely distributable under the GNU and BSD style licenses. The project was terminated sometime before late 2023.

Contents

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 . 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 , patch , 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 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 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. The project was terminated sometime before late 2023, with the repository deleted.

Related Research Articles

Concurrent Versions System is a revision control system originally developed by Dick Grune in July 1986.

In software engineering, version control is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information. Version control is a component of software configuration management.

Revision Control System(RCS) is an early implementation of a version control system (VCS). It is a set of UNIX commands that allow multiple users to develop and maintain program code or documents. With RCS, users can make their own revisions of a document, commit changes, and merge them. RCS was originally developed for programs but is also useful for text documents or configuration files that are frequently revised.

<span class="mw-page-title-main">Apache Subversion</span> Free and open-source software versioning and revision control system

Apache Subversion is a software versioning and revision control system distributed as open source under the Apache License. Software developers use Subversion to maintain current and historical versions of files such as source code, web pages, and documentation. Its goal is to be a mostly compatible successor to the widely used Concurrent Versions System (CVS).

Rational ClearCase is a family of computer software tools that supports software configuration management (SCM) of source code and other software development assets. It also supports design-data management of electronic design artifacts, thus enabling hardware and software co-development. ClearCase includes revision control and forms the basis for configuration management at large and medium-sized businesses, accommodating projects with hundreds or thousands of developers. It is developed by IBM.

<span class="mw-page-title-main">Wget</span> Computer command line program for downloading

GNU Wget is a computer program that retrieves content from web servers. It is part of the GNU Project. Its name derives from "World Wide Web" and "get". It supports downloading via HTTP, HTTPS, and FTP.

<span class="mw-page-title-main">GNU Classpath</span> Implementation of standard class library of Java

GNU Classpath is a free software implementation of the standard class library for the Java programming language. Most classes from J2SE 1.4 and 5.0 are implemented. Classpath can thus be used to run Java-based applications. GNU Classpath is a part of the GNU Project. It was originally developed in parallel with libgcj due to license incompatibilities, but later the two projects merged.

patch (Unix) Unix utility to apply changes to text files

The computer tool patch is a Unix program that updates text files according to instructions contained in a separate file, called a patch file. The patch file is a text file that consists of a list of differences and is produced by running the related diff program with the original and updated file as arguments. Updating files with patch is often referred to as applying the patch or simply patching the files.

<span class="mw-page-title-main">GNU arch</span>

GNU arch software is a distributed revision control system that is part of the GNU Project and licensed under the GNU General Public License. It is used to keep track of the changes made to a source tree and to help programmers combine and otherwise manipulate changes made by multiple people or at different times.

Source Code Control System (SCCS) is a version control system designed to track changes in source code and other text files during the development of a piece of software. This allows the user to retrieve any of the previous versions of the original source code and the changes which are stored. It was originally developed at Bell Labs beginning in late 1972 by Marc Rochkind for an IBM System/370 computer running OS/360.

<span class="mw-page-title-main">Git</span> Software for version control of files

Git is a distributed version control system that tracks changes in any set of computer files, usually used for coordinating work among programmers who are collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows.

In software development, distributed version 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 centralized version control, this enables automatic management branching and merging, speeds up most operations, improves the ability to work offline, and does not rely on a single location for backups. Git, the world's most popular version control system, is a distributed version control system.

<span class="mw-page-title-main">ViewVC</span>

ViewVC is an open-source tool for viewing the contents of CVS and SVN repositories using a web browser. It allows looking at specific revisions of files as well as side-by-side diffs of different revisions. It is written in Python and the view parameters can be modified directly in a URL using a REST style interface.

<span class="mw-page-title-main">Mercurial</span> Distributed revision-control tool for software developers

Mercurial is a distributed revision control tool for software developers. It is supported on Microsoft Windows and Unix-like systems, such as FreeBSD, macOS, and Linux.

CVSNT is a version control system compatible with and originally based on Concurrent Versions System (CVS), but whereas that was popular in the open-source world, CVSNT included features designed for developers working on commercial software including support for Windows, Active Directory authentication, reserved branches/locking, per-file access control lists and Unicode filenames. Also included in CVSNT were various RCS tools updated to work with more recent compilers and compatible with CVSNT.

Branching, in version control and software configuration management, is the duplication of an object under version control. Each object can thereafter be modified separately and in parallel so that the objects become different. In this context the objects are called branches. The users of the version control system can branch any branch.

In software development, version control is a class of systems responsible for managing changes to computer programs or other collections of information such that revisions have a logical and consistent organization. The following tables include general and technical information on notable version control and software configuration management (SCM) software. For SCM software not suitable for source code, see Comparison of open-source configuration management software.

<span class="mw-page-title-main">GNU Bazaar</span>

GNU Bazaar is a distributed and client–server revision control system sponsored by Canonical.

In version control systems, a repository is a data structure that stores metadata for a set of files or directory structure. Depending on whether the version control system in use is distributed, like Git or Mercurial, or centralized, like Subversion, CVS, or Perforce, the whole set of information in the repository may be duplicated on every user's system or may be maintained on a single server. Some of the metadata that a repository contains includes, among other things, a historical record of changes in the repository, a set of commit objects, and a set of references to commit objects, called heads.