All Topics  
Concurrent Versions System

 

   Email Print
   Bookmark   Link






 

Concurrent Versions System



 
 
In the field of software development
Software development

Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
, the Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is a free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 revision control
Revision control

Revision control is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other projects that may be worked on by a team o...
 system. Version control system software keeps track of all work and all changes in a set of files, and allows several developers (potentially widely separated in space and/or time) to collaborate
Collaboration

Collaboration is a recursive process where two or more people or organizations work together toward an intersection of common goals ? for example, an intellectual endeavor that is creative in nature?by sharing knowledge, learning and building consensus....
. Dick Grune
Dick Grune

Dick Grune is a Netherlands computer scientist and university lecturer best known for inventing and developing the first version of Concurrent Versions System, the Concurrent Versions System....
 developed CVS in the 1980s. CVS has become popular in the open source software world and is released under the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
.

Features
CVS uses a client-server
Client-server

The client-server software architecture model distinguishes client systems from server systems, which communicate over a computer network. A client-server application is a distributed system comprising both client and server software....
 architecture: a server stores the current version(s) of a project
Project

A project in business and science is a collaborative enterprise, frequently involving research or design, that is carefully planned to achieve a particular aim....
 and its history, and clients connect to the server in order to "check out" a complete copy of the project, work on this copy and then later "check in" their changes.






Discussion
Ask a question about 'Concurrent Versions System'
Start a new discussion about 'Concurrent Versions System'
Answer questions from other users
Full Discussion Forum



Encyclopedia


In the field of software development
Software development

Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
, the Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is a free software
Free software

Free Software or software libre is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with minimal restrictions only to ensure that further recipients can also do these things and to prevent consumer-facing hardware...
 revision control
Revision control

Revision control is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other projects that may be worked on by a team o...
 system. Version control system software keeps track of all work and all changes in a set of files, and allows several developers (potentially widely separated in space and/or time) to collaborate
Collaboration

Collaboration is a recursive process where two or more people or organizations work together toward an intersection of common goals ? for example, an intellectual endeavor that is creative in nature?by sharing knowledge, learning and building consensus....
. Dick Grune
Dick Grune

Dick Grune is a Netherlands computer scientist and university lecturer best known for inventing and developing the first version of Concurrent Versions System, the Concurrent Versions System....
 developed CVS in the 1980s. CVS has become popular in the open source software world and is released under the GNU General Public License
GNU General Public License

The GNU General Public License is a widely used free software license, originally written by Richard Stallman for the GNU project. The GPL is the most popular and well-known example of the type of strong copyleft license that requires derived works to be available under the same copyleft....
.

Features


CVS uses a client-server
Client-server

The client-server software architecture model distinguishes client systems from server systems, which communicate over a computer network. A client-server application is a distributed system comprising both client and server software....
 architecture: a server stores the current version(s) of a project
Project

A project in business and science is a collaborative enterprise, frequently involving research or design, that is carefully planned to achieve a particular aim....
 and its history, and clients connect to the server in order to "check out" a complete copy of the project, work on this copy and then later "check in" their changes. Typically, the client and server connect over a LAN
Local area network

A local area network is a computer network covering a small physical area, like a home, office, or small group of buildings, such as a school, or an airport....
 or over the Internet
Internet

The Internet is a global network of interconnected computers, enabling users to share information along multiple channels. Typically, a computer that connects to the Internet can access information from a vast array of available server and other computers by moving information from them to the computer's local memory....
, but client and server may both run on the same machine if CVS has the task of keeping track of the version history of a project with only local developers. The server software normally runs on Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
 (although at least the CVSNT
CVSNT

The CVSNT Versioning System implements a version control system: it keeps track of all changes in a set of files, typically the implementation of a software project, and allows several developers to collaboration....
 server supports various flavors of Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 and Linux
Linux

Linux is a generic term referring to Unix-like computer operating systems based on the Linux kernel. Their development is one of the most prominent examples of free and open source software collaboration; typically all the underlying source code can be used, freely modified, and redistributed by anyone under the terms of the GNU GPL license...
), while CVS clients may run on any major operating-system
Operating system

An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
 platform.

Several developers may work on the same project concurrently, each one editing files within their own "working copy" of the project, and sending (or checking in) their modifications to the server. To avoid the possibility of people stepping on each other's toes, the server will only accept changes made to the most recent version
Version

Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software....
 of a file. Developers are therefore expected to keep their working copy up-to-date by incorporating other people's changes on a regular basis. This task is mostly handled automatically by the CVS client, requiring manual intervention only when a conflict arises between a checked-in modification and the yet-unchecked local version of a file.

If the check in operation succeeds, then the version numbers of all files involved automatically increment, and the CVS-server writes a user-supplied description line, the date and the author's name to its log
Data logging

Data logging is the practice of recording sequential data, often Chronology....
 files. CVS can also run external, user-specified log processing scripts following each commit. These scripts are installed by an entry in CVS's loginfo file, which can trigger email notification or convert the log data into a Web-based format.

Clients can also compare versions, request a complete history of changes, or check out a historical snapshot of the project as of a given date or as of a revision number. Many open-source
Open source

Open source is an approach to design, development, and distribution offering practical accessibility to a product's source . Some consider open source as one of various possible design approaches, while others consider it a critical Strategy element of their business operations....
 projects allow "anonymous read access", a feature pioneered by OpenBSD
OpenBSD

OpenBSD is a Unix-like computer operating system descended from Berkeley Software Distribution , a Unix derivative developed at the University of California, Berkeley....
. This means that clients may check out and compare versions with either a blank or simple published password (e.g., "anoncvs"); only the check-in of changes requires a personal account and password in these scenarios.

Clients can also use the "update" command in order to bring their local copies up-to-date with the newest version on the server. This eliminates the need for repeated downloading of the whole project.

CVS can also maintain different "branches" of a project. For instance, a released version of the software project may form one branch, used for bug fixes, while a version under current development, with major changes and new features, can form a separate branch.

CVS uses delta compression for efficient storage of different versions of the same file. The implementation favors files with many lines (usually text files) - in extreme cases the system may store individual copies of each version rather than deltas.

Terminology

CVS labels a single project (set of related files) which it manages as a module. A CVS server stores the modules it manages in its repository
Repository

A repository can be:* Repository clone, a concept from distributed revision control* Component repository management, a field of configuration management...
. Programmers acquire copies of modules by checking out. The checked-out files serve as a working copy, sandbox or workspace. Changes to the working copy will be reflected in the repository by committing
Commit (data management)

In the context of computer science and data management, commit refers to the idea of making a set of tentative changes permanent. A popular usage is at the end of a database transaction....
 them. To update is to acquire or merge
Merge (revision control)

Merging is the act of reconciling multiple changes made to different copies of the same file. Most often, it is necessary when a file is modified by two people on two different computers at the same time....
 the changes in the repository with the working copy.

History and status


CVS developed from an earlier versioning-system called Revision Control System
Revision Control System

The Revision Control System is a software implementation of revision control that automates the storing, retrieval, logging, identification, and merging of revisions....
 (RCS), in use, which manages individual files but not whole projects. Dick Grune has provided some about CVS on his site. To quote:

Grune publicly released the code to mod.sources on June 23, 1986: Google Groups
Google Groups

Google Groups is a free service from Google where groups of people have discussions about common interests. Internet users can find discussion groups related to their interests and participate in Threaded discussioned conversations, either through the Google Groups WorldWideWeb interface, or by e-mail....
 continues to archive and serve the original .

The code that eventually evolved into the current version of CVS started with Brian Berliner in April 1989, with later input from Jeff Polk and many other contributors. Brian Berliner wrote introducing his improvements to the CVS program which describes how the tool was extended and used internally by Prisma, a third-party developer working on the SunOS kernel, and was released for the benefit of the community under the GPL. On November 19, 1990, CVS version 1.0 was submitted to the Free Software Foundation
Free Software Foundation

The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to distribute and modify computer software without restriction....
 for development and distribution.

CVS introduced the implementation of branching
Branching (software)

Branching, in revision control and software configuration management, is the duplication of an object under revision control so that modifications can happen in parallel along both branches....
 into version control systems: the branching techniques in other systems all derive from the CVS implementation as documented in 1990 .

CVS has always solidly supported distributed, multi-site and offline operations due to the unreliability of the few computer networks that existed at the time CVS evolved.

A group of volunteers currently maintains the CVS code. Notably, the development of the Microsoft Windows
Microsoft Windows

Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
 version of CVS has split off into a separate project named CVSNT
CVSNT

The CVSNT Versioning System implements a version control system: it keeps track of all changes in a set of files, typically the implementation of a software project, and allows several developers to collaboration....
 and has been more active in extending the feature set of the system, even porting the changes back to the UNIX platform under the name CVSNT.

Relationship with GNU


Historically, the relationship between CVS and the GNU
GNU

GNU is a computer operating system composed entirely of free software. Its name is a recursive acronym for GNU's Not Unix; it was chosen because its design is Unix-like, but differs from Unix by being free software and containing no Unix code....
 project could appear somewhat ambiguous: the GNU Web site distributed the program, labelling it "GNU package" on one page and "other GPL-licensed project" on another. Clarification came when CVS development moved from cvshome.org to savannah.nongnu.org, with CVS officially assigned to the non-gnu category. On the FTP site, the program has traditionally resided in the /non-gnu/ directory and still does.

Limitations

For each commonly listed limitation of CVS there exists a commonly listed reason. The developers of CVS insist that the following properties of CVS are not shortcomings, but features that were carefully planned, designed and implemented into CVS:

  • CVS does not version the moving or renaming of files and directories. It was implemented this way because in the past refactoring
    Refactoring

    Code refactoring is the process of changing a computer program's internal structure without modifying its external Functional requirement behavior or existing functionality....
     was avoided in development processes. More recently the thinking has changed and refactoring can be managed by an administrator (by directly moving the RCS file in the repository, provided that the administrator knows what he or she is doing) as it is required. If you develop in Oracle Forms, Cobol, Fortran or even C++ then the CVS reasoning is quite commonly accepted; if you develop with Java then the CVS reasoning may seem counterintuitive.
  • No versioning of symbolic link
    Symbolic link

    In computing, a symbolic link is a special type of computer file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution....
    s. Symbolic links stored in a version control system can pose a security risk - someone can create a symbolic link index.htm to /etc/passwd and then store it in the repository; when the "code" is exported to a Web server the Web site now has a copy of the system security file available for public inspection. A developer may prefer the convenience and accept the responsibility to decide what is safe to version and what is not; a project manager or auditor may prefer to reduce the risk by using build scripts that require certain privileges and conscious intervention to execute.
  • Limited support for Unicode
    Unicode

    Unicode is a computing industry standard allowing computers to consistently represent and manipulate Character expressed in most of the world's writing systems....
     and non-ASCII filenames. Many Unix systems run in UTF-8
    UTF-8

    UTF-8 is a Variable-width encoding character encoding for Unicode. It is able to represent any character in the Unicode standard, yet the initial encoding of byte codes and character assignments for UTF-8 is backward compatibility with ASCII....
     and so CVS on such systems handles UTF-8 filenames natively. For programmers working on Unix systems all with the same encoding then this response seems reasonable; but it causes problems when multiple encodings are used, perhaps because clients are running another OS
    Operating system

    An operating system is an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
    , such as AS/400 or Windows
    Microsoft Windows

    Microsoft Windows is a series of software operating systems and graphical user interfaces produced by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces ....
    ).
  • No atomic commit. The network and server used should have sufficient resilience that a commit can complete without either crashing. In many code management processes, development work is performed on branches (for example, add feature A1234), and then merged into the trunk after code review - that final merge is 'atomic' and performed in the data center by QA. The term atomic is sometimes referred to in the transactional database sense where a commit will automatically roll back should it fail for any reason, and sometimes referred to in the sense that each commit can be uniquely identified. If each commit needs to be tracked then this can be handled by modifying the correct trigger.
  • Expensive branch operations. CVS assumes that the majority of work will take place on the trunk — branches should generally be short-lived or historical. When used as designed, branches are easily managed and branch operations are efficient and fast.
  • CVS treats files as textual by default. Text files should be the primary file type stored in the CVS repository. Binary files are supported and files with a particular file extension can automatically be recognised as being binary.
  • No support for distributed revision control
    Distributed revision control

    Distributed revision control is a fairly recent innovation in Computer 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....
     or unpublished changes. Programmers should commit changes to the files often for frequent merging and rapid publication to all users.


Over time, developers have wanted to change the CVS code significantly to add new features, refactor the code, alter the operational model and improve developers' productivity. This has led to the phrase YACC: "Yet Another CVS Clone" (itself a play on the Unix command named, yacc
Yacc

The computer program yacc is a parser generator developed by Stephen C. Johnson at AT&T for the Unix operating system. The name is an acronym for "Yet Another Compiler Compiler." It generates a parsing based on an Formal grammar written in a notation similar to Backus-Naur form....
, which stands for "yet another compiler compiler"). CVS replacement projects include CVSNT
CVSNT

The CVSNT Versioning System implements a version control system: it keeps track of all changes in a set of files, typically the implementation of a software project, and allows several developers to collaboration....
 (first released 1998), (currently in beta as of 31 August 2007), OpenCVS
OpenCVS

OpenCVS is a BSD license implementation of the popular Unix version control software called Concurrent Versions System. OpenCVS is developed as a part of the OpenBSD project by Jean-Francois Brousseau, Joris Vink, Xavier Santolaria, Niall O'Higgins and others....
  (not released as of 27 August 2008) and Subversion (initially released in 2004) and numerous systems to support distributed revision control
Distributed revision control

Distributed revision control is a fairly recent innovation in Computer 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....
.

See also


  • Revision control
    Revision control

    Revision control is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other projects that may be worked on by a team o...
    , a general overview of version-control concepts
  • A list
    List of revision control software

    This is a list of notable software for revision control....
     and comparison of revision control software
    Comparison of revision control software

    The following tables compare general and technical information for notable revision control and software configuration management software. This article is not all-inclusive and may become out of date quickly....
  • DCVS
    Distributed Concurrent Versions System

    The Distributed Concurrent Versions System is a version control system that enables software developers working on locally distributed sites to efficiently collaborate on a software project....
    , a distributed revision control system based on CVS
  • Distributed revision control
    Distributed revision control

    Distributed revision control is a fairly recent innovation in Computer 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....
  • TortoiseCVS
    TortoiseCVS

    TortoiseCVS is a Concurrent Versions System client for Microsoft Windows released under the GNU General Public License. Unlike most CVS tools, it includes itself in Windows' Operating system shell by adding entries in the contextual menu of the file explorer, therefore it does not run in its own Window ....
    , a shell-integrated CVS client for Windows
  • Subversion (SVN), an open-source revision control system developed because CVS "just wasn't implemented as well as it could be"
  • Git
    Git (software)

    Git is a free software distributed revision control, or software source code management project with an emphasis on being fast. Git was initially created by Linus Torvalds for Linux kernel development....
    , an open-source revision control system that allows CVS clients .
  • CVSNT
    CVSNT

    The CVSNT Versioning System implements a version control system: it keeps track of all changes in a set of files, typically the implementation of a software project, and allows several developers to collaboration....
     – open-source revision control system derived from CVS, expanded with features primarily for commercial software developers
  • Bonsai CVS code management system
    Bonsai CVS code management system

    Bonsai is a web-based browser of Concurrent Versions System repository designed for large programming projects. It was initially developed to fill the Mozilla project's need for good tools to allow multiple developers to edit its extremely large codebase....
    , a tool to report on files, directories, and branches under CVS management.
  • Cervisia
    Cervisia

    Cervisia is a graphical front end for Concurrent Versions System .Cervisia implements the common cvs functions of adding, removing, and committing files....
    , a KDE GUI frontend for CVS
  • ViewVC
    ViewVC

    ViewVC is an open source tool for viewing the contents of Concurrent Versions System and Subversion repositories using a web browser. It allows you to look at specific revisions of files as well as side by side diffs of different revisions....
    , a browser interface for CVS repositories
  • OpenGrok
    OpenGrok

    OpenGrok is a source code search and cross reference engine. The latest version of OpenGrok is 0.7. It helps you search, cross-reference and navigate your source tree....
    , a browser interface for CVS repositories
  • Bazaar (software), open source, distributed version control system.


IDEs with support for CVS

  • Vim, plugin is found here and is called "Menu for CVS-Versioncontrol"
  • Emacs
    Emacs

    Emacs is a class of feature-rich text editors, usually characterized by their extensibility. Emacs has, perhaps, more editing commands than any other editor or word processor, numbering over 1,000....
  • Anjuta
    Anjuta

    Anjuta is an integrated development environment for the C and C++ computer programming languages, written for the GNOME project. It comes standard on base installation DVDs of major Linux distributions such as openSuse, Fedora, and Mandriva ....
  • Dev-C++
    Dev-C++

    Dev-C++ is a free software integrated development environment distributed under the GNU General Public License for programming in C /C++. It is bundled with the free software, MinGW compiler....
  • Eclipse
    Eclipse (software)

    Eclipse is a multi-language software development environment comprising an Integrated development environment and a plug-in system to extend it....
  • NetBeans
    NetBeans

    NetBeans refers to both a Platform for the development of applications for the network , and an integrated development environment developed using the NetBeans Platform....
  • IntelliJ IDEA
    IntelliJ IDEA

    IntelliJ IDEA is a commercial Java Integrated Development Environment by the company JetBrains.The first version of IntelliJ IDEA appeared in January, 2001, and quickly became very popular, as the first Java IDE with a set of integrated refactoring tools that allow programmers to quickly redesign their code....
  • wxDev-C++
    WxDev-C++

    wxDev-C++ is a free software integrated development environment that is based on the popular Dev-C++.There are various features not found in the original Dev-C++....
  • KDevelop
    KDevelop

    KDevelop is a free software integrated development environment for the KDE desktop environment for Unix-like computer operating systems. KDevelop does not include a compiler; instead, it uses an external compiler such as GNU Compiler Collection to produce executable code....
  • Komodo IDE
  • Aqualogic
    AquaLogic

    In computing, AquaLogic comprises a software suite developed by BEA Systems for managing service-oriented architecture . It includes the following products:...
  • Xcode
    Xcode

    Xcode is a suite of tools for developing software on Mac OS X, developed by Apple Inc.. Xcode 3.0, the latest major version, is bundled free with Mac OS X v10.5, though it is not installed by default....
  • PhpED
    PHPEd

    PhpED is a commercial Integrated Development Environment for PHP , HTML, CSS, XML, SMARTY, XHTML and other.Features: Advanced PHP Editor, PHP Debugger and PHP Profiler, Code Insight, Database Client, deployment over FTP/SFTP/WebDav, CVS/SVN support, Integrated Help System....


External links

  • (the main web site for CVS - currently maintained by Derek Price)
  • A collection of practices for version control using CVS.