revision control
Information about revision control
Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) 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 critical information that may be worked on by a team of people. Changes to these documents are identified by incrementing an associated number or letter code, termed the "revision number", "revision level", or simply "revision" and associated historically with the person making the change. A simple form of revision control, for example, has the initial issue of a drawing assigned the revision number "1". When the first change is made, the revision number is incremented to "2" and so on.
Standalone version control systems mostly come from the software engineering industry, but revision control is also embedded in various types of software like word processors (e.g. MSWord, OOwriter, Koffice), spreadsheets (e.g. OOcalc), in various content management systems. Integrated revision control is a key feature of wiki software packages such as MediaWiki, TWiki, etc. In wikis, revision control allows for the ability to revert a page to a previous revision, which is critical for defending a public wiki against vandalism and spam, to allow legitimate users to correct their mistakes, and to allow groups of editors to track each other's edits.
Software tools for revision control are increasingly recognized as being necessary for the organization of multi-developer projects.[1]
As software is designed, developed and deployed, it is extremely common for multiple versions of the same software to be deployed in different sites, and for the software's developers to be working simultaneously on updates. Bugs and other issues with software are often only present in certain versions (because of the fixing of some problems and the introduction of others as the program develops). Therefore, for the purposes of locating and fixing bugs, it is vitally important to be able to retrieve and run different versions of the software to determine in which version(s) the problem occurs. It may also be necessary to develop two versions of the software concurrently (for instance, where one version has bugs fixed, but no new features, while the other version is where new features are worked on).
At the simplest level, developers could simply retain multiple copies of the different versions of the program, and number them appropriately. This simple approach has been used on many large software projects. While this method can work, it is inefficient as many near-identical copies of the program have to be maintained. This requires a lot of self-discipline on the part of developers, and often leads to mistakes. Consequently, systems to automate some or all of the revision control process have been developed.
Moreover, in software development and other environments, including in legal and business practice, it is increasingly common for a single document or snippet of code to be edited by a team, the members of which may be geographically diverse and/or may pursue different and even contrary interests. Sophisticated revision control that tracks and accounts for ownership of changes to documents and code may be extremely helpful or even necessary in such situations.
Another use for revision control is to track changes to configuration files, such as those typically stored in /etc or /usr/local/etc on Unix systems. This gives system administrators another way to easily track changes to configuration files and a way to roll back to earlier versions should the need arise.
File locking has merits and drawbacks. It can provide some protection against difficult merge conflicts when a user is making radical changes to many sections of a large file (or group of files). But if the files are left exclusively locked for too long, other developers can be tempted to simply bypass the revision control software and change the files locally anyway. That can lead to more serious problems.
The concept of a reserved edit can provide an optional means to explicitly lock a file for exclusive write access, even though a merging capability exists.
..... Click the link for more information.
Standalone version control systems mostly come from the software engineering industry, but revision control is also embedded in various types of software like word processors (e.g. MSWord, OOwriter, Koffice), spreadsheets (e.g. OOcalc), in various content management systems. Integrated revision control is a key feature of wiki software packages such as MediaWiki, TWiki, etc. In wikis, revision control allows for the ability to revert a page to a previous revision, which is critical for defending a public wiki against vandalism and spam, to allow legitimate users to correct their mistakes, and to allow groups of editors to track each other's edits.
Software tools for revision control are increasingly recognized as being necessary for the organization of multi-developer projects.[1]
Overview
Engineering revision control developed from formalized processes based on tracking revisions of early blueprints or bluelines. Implicit in this control was the ability to return to any earlier state of the design, for cases in which an engineering dead-end was reached in the development of the design. Likewise, in computer software engineering, revision control is any practice that tracks and provides control over changes to source code. Software developers sometimes use revision control software to maintain documentation and configuration files as well as source code. Also, version control is widespread in business and law. Indeed, "contract redline" and "legal blackline" are some of the earliest forms of revision control, and are still employed with varying degrees of sophistication. An entire industry has emerged to service the document revision control needs of business and other users, and some of the revision control technology employed in these circles is subtle, powerful, and innovative. The most sophisticated techniques are beginning to be used for the electronic tracking of changes to CAD files (see Product Data Management), supplanting the "manual" electronic implementation of traditional revision control.As software is designed, developed and deployed, it is extremely common for multiple versions of the same software to be deployed in different sites, and for the software's developers to be working simultaneously on updates. Bugs and other issues with software are often only present in certain versions (because of the fixing of some problems and the introduction of others as the program develops). Therefore, for the purposes of locating and fixing bugs, it is vitally important to be able to retrieve and run different versions of the software to determine in which version(s) the problem occurs. It may also be necessary to develop two versions of the software concurrently (for instance, where one version has bugs fixed, but no new features, while the other version is where new features are worked on).
At the simplest level, developers could simply retain multiple copies of the different versions of the program, and number them appropriately. This simple approach has been used on many large software projects. While this method can work, it is inefficient as many near-identical copies of the program have to be maintained. This requires a lot of self-discipline on the part of developers, and often leads to mistakes. Consequently, systems to automate some or all of the revision control process have been developed.
Moreover, in software development and other environments, including in legal and business practice, it is increasingly common for a single document or snippet of code to be edited by a team, the members of which may be geographically diverse and/or may pursue different and even contrary interests. Sophisticated revision control that tracks and accounts for ownership of changes to documents and code may be extremely helpful or even necessary in such situations.
Another use for revision control is to track changes to configuration files, such as those typically stored in /etc or /usr/local/etc on Unix systems. This gives system administrators another way to easily track changes to configuration files and a way to roll back to earlier versions should the need arise.
Compression
Most revision control software can use delta compression, which retains only the differences between successive versions of files. This allows more efficient storage of many different versions of files.Source management models
Traditional revision control systems use a centralized model, where all the revision control functions are performed on a shared server. If two developers try to change the same file at the same time, without some method of managing access the developers may end up overwriting each other's work. Centralized revision control systems solve this problem in one of 2 different "source management models": file locking and version merging.File locking
The simplest method of preventing "concurrent access" problems is to lock files so that only one developer at a time has write access to the central "repository" copies of those files. Once one developer "checks out" a file, others can read that file, but no one else is allowed to change that file until that developer "checks in" the updated version (or cancels the checkout).File locking has merits and drawbacks. It can provide some protection against difficult merge conflicts when a user is making radical changes to many sections of a large file (or group of files). But if the files are left exclusively locked for too long, other developers can be tempted to simply bypass the revision control software and change the files locally anyway. That can lead to more serious problems.
Version merging
Most version control systems, such as CVS, allow multiple developers to be editing the same file at the same time. The first developer to "check in" changes to the central repository always succeeds. The system provides facilities to merge changes into the central repository, so the improvements from the first developer are preserved when the other programmers check in.The concept of a reserved edit can provide an optional means to explicitly lock a file for exclusive write access, even though a merging capability exists.
Distributed revision control
Distributed revision control takes a peer-to-peer approach, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a bona-fide repository.[2] Synchronization is conducted by exchanging patches (change-sets) from peer to peer. This results in some striking differences from a centralized system:- No canonical, reference copy of the codebase exists by default; only working copies.
- Common operations such as commits, viewing history, and reverting changes are fast, because there is no need to communicate with a central server.[3]
- Each working copy is effectively a remoted backup of the codebase and change history, providing natural security against data loss.[3]
Open Systems
An open system of distributed revision control is characterized by its support for independent branches, and its heavy reliance on merge operations. Its general characteristics are:- Every working copy is effectively a branch.
- Each branch is actually implemented as a working copy, with merges conducted by ordinary patch exchange, from branch to branch.
- Code forking is therefore easier to accomplish, where desired, because every working copy is a potential fork. (By the same token, undesirable forks are easier to mend because, if the dispute can be resolved, re-merging the code is easy.)
- It may be possible to "cherry-pick" single changes, selectively pulling them from peer to peer.
- New peers can freely join, without applying for access to a server.
|
Closed Systems
A closed system of distributed revision control is based on a Replicated Database. A check-in is equivalent to a distributed commit. Successful commits create a single baseline. An example of a closed distributed system is Code Co-op.Integration
Some of the more advanced revision control tools offer many other facilities, allowing deeper integration with other tools and software engineering processes. Plugins are often available for IDEs such as IntelliJ IDEA, Eclipse and Visual Studio. NetBeans IDE comes with integrated version control support.Common vocabulary
Terminology can vary from system to system, but here are some terms in common usage.[5][6]- Baseline
- An approved revision of a document or source file from which subsequent changes can be made.
; Branch : A set of files under version control may be branched or forked at a point in time so that, from that time forward, two copies of those files may be developed at different speeds or in different ways independently of the other.
; Check-out : A check-out (or checkout or co) creates a local working copy from the repository. Either a specific revision is specified, or the latest is obtained.
; Commit : A commit (check-in, ci or, more rarely, install, submit or record) occurs when a copy of the changes made to the working copy is written or merged into the repository.
; Conflict : A conflict occurs when two changes are made by different parties to the same document, and the system is unable to reconcile the changes. A user must resolve the conflict by combining the changes, or by selecting one change in favour of the other.
; Change : A change (or diff, or delta) represents a specific modification to a document under version control. The granularity of the modification considered a change varies between version control systems.
; Change list : On many version control systems with atomic multi-change commits, a changelist, change set, or patch identifies the set of changes made in a single commit. This can also represent a sequential view of the source code, allowing source to be examined as of any particular changelist ID.
; Dynamic stream : A stream (a data structure that implements a configuration of the elements in a particular repository) whose configuration changes over time, with new versions promoted from child workspaces and/or from other dynamic streams. It also inherits versions from its parent stream.
; Export : An export is similar to a check-out except that it creates a clean directory tree without the version control metadata used in a working copy. Often used prior to publishing the contents.
; Head : The most recent commit.
; Import : An import is the action of copying a local directory tree (that is not currently a working copy) into the repository for the first time.
; Mainline : Similar to Trunk, but there can be a Mainline for each branch.
; Merge : A merge or integration brings together two sets of changes to a file or set of files into a unified revision of that file or files.
- * This may happen when one user, working on those files, updates their working copy with changes made, and checked into the repository, by other users. Conversely, this same process may happen in the repository when a user tries to check-in their changes.
- * It may happen after a set of files has been branched, then a problem that existed before the branching is fixed in one branch and this fix needs merging into the other.
- * It may happen after files have been branched, developed independently for a while and then are required to be merged back into a single unified trunk.
References
1. ^ Rapid Subversion Adoption Validates Enterprise Readiness and Challenges Traditional Software Configuration Management Leaders. EETimes (2007-5-17). Retrieved on 2007-6-1.
2. ^ Wheeler, David A.. Comments on Open Source Software / Free Software (OSS/FS) Software Configuration Management (SCM) Systems. Retrieved on 2007-05-08.
3. ^ O'Sullivan, Bryan. Distributed revision control with Mercurial. Retrieved on 2007-07-13.
4. ^ "", Wikinews, 2005-04-07.
5. ^ Collins-Sussman, Ben; Fitzpatrick, B.W. and Pilato, C.M. (2004). Version Control with Subversion. O'Reilly. ISBN 0-596-00448-6.
6. ^ Wingerd, Laura (2005). Practical Perforce. O'Reilly. ISBN 0-596-10185-6.
2. ^ Wheeler, David A.. Comments on Open Source Software / Free Software (OSS/FS) Software Configuration Management (SCM) Systems. Retrieved on 2007-05-08.
3. ^ O'Sullivan, Bryan. Distributed revision control with Mercurial. Retrieved on 2007-07-13.
4. ^ "", Wikinews, 2005-04-07.
5. ^ Collins-Sussman, Ben; Fitzpatrick, B.W. and Pilato, C.M. (2004). Version Control with Subversion. O'Reilly. ISBN 0-596-00448-6.
6. ^ Wingerd, Laura (2005). Practical Perforce. O'Reilly. ISBN 0-596-10185-6.
See also
- History of software configuration management
- Comparison of revision control software
- Configuration management
- List of revision control software - by category
- Neutral build
- Recombinant text
- Scientific Community Metaphor only adds and records changes, but does not allow retractions of publications
- SCM (Software Configuration Management) - Revision control for software projects
- Software versioning
- Source tracking
- SyncML
- WebDAV
- Versioning file system
- Files-11 filesystem for OpenVMS supports file versioning
- Fossil filesystem for Plan 9 supports intervaled snapshots
- ZFS filesystem for OpenSolaris supports intervaled snapshots
External links
- The Configuration Management Yellow Pages at CM Crossroads
- Revctrl Wiki
- Essays on Version control A collection of essays on version control and software configuration management
- Eric Sink's Source Control HOWTO A primer on the basics of version control
- RevML
- Better SCM Initiative, a web site comparing SCM tools
- Visual Guide to Version Control
Engineering is the applied science of acquiring and applying knowledge to design, analysis, and/or construction of works for practical purposes. The American Engineers' Council for Professional Development, also known as ECPD,[1] (later ABET [2]
..... Click the link for more information.
..... Click the link for more information.
Software development is the translation of a user need or marketing goal into a software product.[1][2] Software development is sometimes understood to encompass the processes of software engineering combined with the research and goals of software marketing
..... Click the link for more information.
..... Click the link for more information.
source code (commonly just source or code) is any sequence of statements and/or declarations written in some human-readable computer programming language.
..... Click the link for more information.
..... Click the link for more information.
blueprint is a type of paper-based reproduction usually of a technical drawing documenting an architecture or an engineering design. More generally, the term "blueprint" has come to be used to refer to any detailed plan.
..... Click the link for more information.
..... Click the link for more information.
A word processor (more formally known as document preparation system) is a computer application used for the production (including composition, editing, formatting, and possibly printing) of any sort of printable material.
..... Click the link for more information.
..... Click the link for more information.
A Content Management System (CMS) is a software system used for content management. Content management systems are deployed primarily for interactive use by a potentially large number of contributors.
..... Click the link for more information.
..... Click the link for more information.
This is a list of notable software for revision control.
..... Click the link for more information.
Distributed model
In the distributed approach, each developer works directly with their own local repository, and changes are shared between repositories as a separate step...... Click the link for more information.
Whiteprint is the commercial terminology to describe document reproduction using the diazo chemical process. It is also known as the blueline or blue-line process.
There are two components in this process:
..... Click the link for more information.
There are two components in this process:
- the diazonium salt - a light sensitive chemical
..... Click the link for more information.
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.[1] The term software engineering
..... Click the link for more information.
..... Click the link for more information.
A software developer is a person who is concerned with one or more facets of the software development process, a somewhat broader scope of computer programming or a specialty of project managing.
..... Click the link for more information.
..... Click the link for more information.
configuration files, or config files, are used to configure the initial settings for some computer programs. They are used for user applications, server processes and operating system settings.
..... Click the link for more information.
..... Click the link for more information.
CAD may refer to:
..... Click the link for more information.
- Computer-aided diagnosis (medical), an inter-discipline combining computer science and radiography to support the diagnostic process
- Computer Assisted Detection (medical)
..... Click the link for more information.
Product Data Management (PDM) is a category of computer software used to control data related to products. PDM creates and manages relations between sets of data that define a product, and store those relationships in a database.
..... Click the link for more information.
..... Click the link for more information.
A software bug (or just "bug") is an error, flaw, mistake, failure, or fault in a computer program that prevents it from behaving as intended (e.g., producing an incorrect result).
..... Click the link for more information.
..... Click the link for more information.
Delta encoding is a way of storing or transmitting data in the form of differences between sequential data rather than complete files. Delta encoding is sometimes called delta compression, particularly where archival histories of changes are required (e.g.
..... Click the link for more information.
..... Click the link for more information.
Server Computer
The inside/front of a server computer
Connects to:
..... Click the link for more information.
The inside/front of a server computer
Connects to:
- Internet via one of
..... Click the link for more information.
concurrency control ensures that correct results for concurrent operations are generated, while getting those results as quickly as possible.
..... Click the link for more information.
Concurrency control in databases
..... Click the link for more information.
Concurrent Versions System (CVS), also known as the Concurrent Versioning System, is an open-source version control system that keeps track of all work and all changes in a set of files, typically the implementation of a software project, and allows several
..... Click the link for more information.
..... Click the link for more information.
Good faith, or in Latin bona fides (the inflected forms bonae fidei and bona fide are also used), is the mental and moral state of honesty, conviction as to the truth or falsehood of a proposition or body of opinion, or as to the rectitude or
..... Click the link for more information.
..... Click the link for more information.
BitKeeper is a software tool for revision control (configuration management, SCM, etc.) of computer source code. A sophisticated distributed system, BitKeeper competes largely against other professional systems such as Rational ClearCase and Perforce.
..... Click the link for more information.
..... Click the link for more information.
Linux kernel is a Unix-like operating system kernel. It is the namesake of the Linux family of operating systems. Released under the GNU General Public License (GPL) and developed by contributors worldwide, Linux is one of the most prominent examples of free and open source
..... Click the link for more information.
..... Click the link for more information.
Bazaar (formerly Bazaar-NG) is a distributed revision control system sponsored by Canonical Ltd., designed to make it easier for anyone to contribute to open source software projects. As of 2007, the best known users of Bazaar is the Ubuntu project.
..... Click the link for more information.
..... Click the link for more information.
Darcs is a distributed revision control system by David Roundy that was designed to replace traditional centralized source control systems such as CVS and subversion. Two particular features in its design distinguish it from CVS.
..... Click the link for more information.
..... Click the link for more information.
Git is a distributed revision control / software configuration management project created by Linus Torvalds. It should not be confused with GIT (GNU Interactive Tools) , a Norton Commander-like file manager created by Tudor Hulubei and Andrei Pitis.
..... Click the link for more information.
..... Click the link for more information.
Mercurial is a cross-platform, distributed source management tool for software developers.
It is written in Python, with a binary diff implementation written in C. Mercurial is primarily a command line program.
..... Click the link for more information.
It is written in Python, with a binary diff implementation written in C. Mercurial is primarily a command line program.
..... Click the link for more information.
Maintainer: Nathaniel Smith, Graydon Hoare
OS: Unix, Linux, BSD, Mac OS X, Windows
Use: revision control
License: GPL
Website: Monotone home Monotone is an open source software tool for revision control.
..... Click the link for more information.
OS: Unix, Linux, BSD, Mac OS X, Windows
Use: revision control
License: GPL
Website: Monotone home Monotone is an open source software tool for revision control.
..... Click the link for more information.
For the country, see .
SVK (also written svk) is a decentralized version control system written in Perl, with a design comparable to BitKeeper and GNU arch. The primary author of svk is Chia-liang Kao (Chinese: 高嘉良)...... Click the link for more information.
?
Aldon Yes Yes ? Yes Yes Yes Yes ? ? ?
AllFusion Harvest Change Manager Yes No No No Yes No No Yes Yes Yes
Bazaar Yes Yes Yes Yes Yes Partial[9] Yes No Yes[10] Yes
..... Click the link for more information.
Aldon Yes Yes ? Yes Yes Yes Yes ? ? ?
AllFusion Harvest Change Manager Yes No No No Yes No No Yes Yes Yes
Bazaar Yes Yes Yes Yes Yes Partial[9] Yes No Yes[10] Yes
..... Click the link for more information.
database is a structured collection of records or data that is stored in a computer system so that a computer program or person using a query language can consult it to answer queries. The records retrieved in answer to queries are information that can be used to make decisions.
..... Click the link for more information.
..... Click the link for more information.
Code Co-op is the peer-to-peer version control system made by Reliable Software.
..... Click the link for more information.
Distinguishing features
Code Co-op is a distributed version control system of the closed type...... Click the link for more information.
This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.