Concurrent Versions System
Encyclopedia
The Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is a client-server free software
Free software
Free software, software libre or libre software 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 restrictions that only ensure that further recipients can also do...

 revision control
Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...

 system in the field of software development
Software development
Software development is the development of a software product...

. 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 working together to achieve a goal. It is a recursive process where two or more people or organizations work together to realize shared goals, — for example, an intriguing endeavor that is creative in nature—by sharing...

. Dick Grune
Dick Grune
Dick Grune is a Dutch computer scientist and university lecturer best known for inventing and developing the first version of CVS, the Concurrent Versions System. Grune was involved in the construction of Algol 68 compilers in the 1970s and the Amsterdam Compiler Kit in the 1980s.- Selected...

 developed CVS as a series of shell scripts in July 1986. There was a similar system available earlier in the mid-'70s developed by John Humbert.

CVS became popular with commercial software developers and also the open source software world and is released under the GNU General Public License
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

. There is regular development to add features and fix bugs, regular builds and test results and a correlation between development and requests for new features or bug reports which suggests that the product is mature.

Features

CVS uses a client–server architecture: a server stores the current version(s) of a project
Project
A project in business and science is typically defined as a collaborative enterprise, frequently involving research or design, that is carefully planned to achieve a particular aim. Projects can be further defined as temporary rather than permanent social systems that are constituted by teams...

 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 that interconnects computers in a limited area such as a home, school, computer laboratory, or office building...

 or over the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

, 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 multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, 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 collaborate...

 server also supports various flavors of Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

), while CVS clients may run on any major operating-system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 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 others' toes, the server will only accept changes made to the most recent version 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 an edit conflict
Edit conflict
An edit conflict is a computer software problem encountered on wikis. An edit conflict occurs when a shared document is being edited by more than one person at the same time and a conflict is generated...

 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 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.

Anonymous CVS

Many open-source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 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. It was forked from NetBSD by project leader Theo de Raadt in late 1995...

. 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
Information repository
An information repository is an easy way to deploy a secondary tier of data storage that can comprise multiple, networked data storage technologies running on diverse operating systems, where data that no longer needs to be in primary storage is protected, classified according to captured metadata,...

. 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 transaction. A commit is an act of committing.-Data management:...

them. To update is to acquire or merge
Merge (revision control)
Merging in revision control, is a fundamental operation that reconciles multiple changes made to a revision-controlled collection of files. 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 is useful for text that is revised frequently, for example programs, documentation, procedural graphics, papers, and form...

 (RCS) ( in use) which manages individual files but not whole projects. Dick Grune has provided some brief historical notes 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 service from Google Inc. that supports discussion groups, including many Usenet newsgroups, based on common interests. The service was started in 1995 as Deja News, and was transitioned to Google Groups after a February 2001 buyout....

 continues to archive and serve the original usenet post.

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 a paper 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 create, distribute and modify computer software...

 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. Whilst RCS
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 is useful for text that is revised frequently, for example programs, documentation, procedural graphics, papers, and form...

 did incorporate the concept of branches
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....

 - they were for individual files only.

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.

Active development of CVS continues with new releases correlating directly with requests for new features or bug reports, with the latest version released May 2008, and only some maintenance bugfixes since then in the CVS project's own CVS repository. which suggests that the product is mature.

Development of the Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

 port 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 collaborate...

 and has been more active in extending the feature set of the system, even porting the changes back to the UNIX platform.

Relationship with GNU

Historically, the relationship between CVS and the GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...

 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.

Criticism

The developers of CVS claim that many of the listed common criticisms of CVS were planned carefully and implemented intentionally into CVS:
  • Revisions created by a commit are per file, rather than spanning the collection of files that make up the project or spanning the entire repository. At the occasional times that a release is made a tag can be performed to associate the set of revisions with a meaningful release name (e.g.: Office 2010).
  • 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 "disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior", undertaken in order to improve some of the nonfunctional attributes of the software....

     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
  • No versioning of symbolic link
    Symbolic link
    In computing, a symbolic link is a special type of file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. Symbolic links were already present by 1978 in mini-computer operating systems from DEC and Data...

    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 for the consistent encoding, representation and handling of text 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 multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...

    , and so CVS on such systems handles UTF-8 filenames natively, but relying on native character sets can cause problems when multiple encodings are used (e.g. clients are running another OS
    Operating system
    An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

    , such as AS/400 or legacy versions of Windows
    Microsoft Windows
    Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

    ).
  • No atomic commit. The network and server used should have sufficient resilience that a commit can complete without ever 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 recognized as being binary.
  • No support for distributed revision control
    Distributed revision control
    A distributed revision control system , distributed version control or decentralized version control keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.-Distributed vs...

     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 parser based on an analytic grammar written in a notation similar to BNF.Yacc used to be available as...

, 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 collaborate...

 (first released 1998), EVS (first released 2008), OpenCVS
OpenCVS
OpenCVS is a BSD-licensed 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, Xavier Santolaria, Niall O'Higgins and others....

  (not released as of 11 April 2011) and Subversion (initially released in 2004) and numerous systems to support distributed revision control
Distributed revision control
A distributed revision control system , distributed version control or decentralized version control keeps track of software revisions and allows many developers to work on a given project without necessarily being connected to a common network.-Distributed vs...

.

See also

  • OpenCVS
    OpenCVS
    OpenCVS is a BSD-licensed 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, Xavier Santolaria, Niall O'Higgins and others....

    , BSD-licensed implementation of CVS that is developed as a part of the OpenBSD project.
  • StatCVS
    StatCVS
    StatCVS is an open source program written in Java that generates graphical reports about CVS modules. It reveals, for example, which developer has made the most check-ins to the repository, and plots the development of the lines of code of the entire module and individual folders over time.StatCVS...

    , a program that generates graphical reports about CVS repositories.
  • TortoiseCVS
    TortoiseCVS
    TortoiseCVS is a CVS client for Microsoft Windows released under the GNU General Public License. Unlike most CVS tools, it includes itself in Windows' shell by adding entries in the contextual menu of the file explorer, therefore it does not run in its own window...

    , a shell-integrated 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 collaborate...

     client for Windows (commonly used with CVS servers)
  • Bonsai CVS code management system
    Bonsai CVS code management system
    Bonsai is a web-based CVS repository browser 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.- Features :...

    , 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 CVS and SVN 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. It helps you search, cross-reference and navigate your source tree. It can understand various program file formats and version control histories like Monotone, SCCS, RCS, CVS, Subversion, Mercurial, Git and Bazaar...

    , a browser interface for CVS repositories
  • CodeBeamer (software)
    CodeBeamer (software)
    codeBeamer is a web based Collaborative Application Lifecycle Management tool for distributed software development, written in Java. It is developed and marketed by Intland Software. Its license is proprietary, but free versions and free hosting options are available...

    , a Collaborative Application Lifecycle Management solution with built-in CVS support.

IDEs with support for CVS

  • Anjuta
    Anjuta
    Anjuta is an integrated development environment for the C, C++, Java, JavaScript, Python and Vala computer programming languages, written for the GNOME project...

  • Aqua Data Studio
  • Vim
    Vim (text editor)
    Vim is a text editor written by Bram Moolenaar and first released publicly in 1991. Based on the vi editor common to Unix-like systems, Vim is designed for use both from a command line interface and as a standalone application in a graphical user interface...

  • Emacs
    Emacs
    Emacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...

  • Dev-C++
    Dev-C++
    Dev-C++ is a free integrated development environment distributed under the GNU General Public License for programming in C and C++. MinGW, a free compiler, is bundled with it. The IDE is written in Delphi....

  • Eclipse
    Eclipse (software)
    Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...

    • Aptana
      Aptana
      Aptana, Inc. is a company making web application development tools for Web 2.0 and Ajax for use with programming languages such as JavaScript, Ruby, PHP and Python. Aptana's main products are Aptana Studio, Aptana Cloud and Aptana Jaxer...

  • NetBeans
    NetBeans
    NetBeans refers to both a platform framework for Java desktop applications, and an integrated development environment for developing with Java, JavaScript, PHP, Python, Groovy, C, C++, Scala, Clojure, and others...

  • IntelliJ IDEA
    IntelliJ IDEA
    IntelliJ IDEA is a commercial Java IDE by JetBrains. It is often simply referred to as "IDEA" or "IntelliJ."-History:The first version of IntelliJ IDEA was released in January 2001, and at the time was the only available Java IDE with advanced code navigation and code refactoring capabilities...

  • wxDev-C++
    WxDev-C++
    wxDev-C++ is a free integrated development environment that is based on the popular Dev-C++.There are various features not found in the original Dev-C++. One of these is a visual RAD designer that works like C++ Builder to create wxWidgets applications...

  • KDevelop
    KDevelop
    KDevelop is a free software integrated development environment for the KDE Platform on Unix-like computer operating systems. KDevelop includes no compiler. Instead, it uses an external compiler such as gcc to produce executable code....

  • Komodo IDE
  • Xcode
    Xcode
    Xcode is a suite of tools, developed by Apple, for developing software for Mac OS X and iOS. Xcode 4.2, the latest major version, is available on the Mac App Store for free for Mac OS X 10.7 , and on the Apple Developer Connection website for free to registered developers Xcode is a suite of tools,...

  • PHPEdit
    PHPEdit
    PHPEdit is a commercial IDE developed by the French company WaterProof SARL. It is written in Delphi and runs on the Microsoft Windows operating system, and is designed mainly for the PHP language, but supports many other languages such as CSS, HTML, JavaScript, INI, PHPEditScript, PlainText, SQL,...

  • JDeveloper
    JDeveloper
    JDeveloper is a freeware IDE supplied by Oracle Corporation. It offers features for development in Java, XML, SQL and PL/SQL, HTML, JavaScript, BPEL and PHP...

  • Oracle SQL Developer
    Oracle SQL Developer
    In computing, Oracle SQL Developer is an Integrated development environment for working with SQL in Oracle databases. Oracle Corporation provides this product free; it uses the Java Development Kit.- Features :...

  • SlickEdit
    SlickEdit
    SlickEdit, previously known as Visual SlickEdit, is a cross-platform commercial source code editor by SlickEdit, Inc. SlickEdit provides syntax highlighting, code navigation and customizable keyboard shortcuts. Versions from 2007 and later also support programmable code...

  • Wing IDE
    Wing IDE
    The Wing IDE is an integrated development environment for the Python programming language from Wingware.It provides local and remote debugging, editing, code intelligence, testing, version control, and search capabilities to reduce development and debugging time, cut down on coding errors, and...

     Professional
  • Qt Creator
    Qt Creator
    Qt Creator is a cross-platform C++ integrated development environment which is part of the Qt SDK. It includes a visual debugger and an integrated GUI layout and forms designer. The editor's features includes syntax highlighting and autocompletion, but not tabs. Qt Creator uses the C++ compiler...

  • Visual Studio

External links

(currently maintained by Derek Price)
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK