Citizendia
Your Ad Here

For the Wikipedia's revision control system, see Wikipedia: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 projects that may be worked on by a team of people. Engineering is the Discipline and Profession of applying technical and scientific Knowledge and Software development is the translation of a user need or marketing goal into a Software product In Computer science, source code (commonly just source or code) is any sequence of statements or declarations written in some Human-readable A blueprint is a type of paper-based reproduction usually of a Technical drawing, documenting an Architecture or an Engineering design A team comprises a group of people or Animals linked in a common purpose Changes to these documents are usually 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.

Version control systems are most commonly stand-alone applications, but revision control is also embedded in various types of software like word processors (e. g. Microsoft Word, OpenOffice.org Writer, KOffice, Pages, Google Docs), spreadsheets (e. Microsoft Word is Microsoft 's flagship word processing software. OpenOfficeorg Writer is the Word processor component of the OpenOffice KOffice is an Office suite for the K Desktop Environment ( KDE) Past Global Changes ( PAGES) founded in 1991 is a core project of the International Geosphere-Biosphere Programme (IGBP and is funded by the U Google Docs is a free Web-based Word processor, Spreadsheet, and Presentation application offered by Google. g. OpenOffice.org Calc, Google Spreadsheets), in various content management systems. OpenOfficeorg Calc is the Spreadsheet component of the OpenOffice Google Docs is a free Web-based Word processor, Spreadsheet, and Presentation application offered by Google. A content management system ( CMS) is a computer application used to create edit manage and publish content in a consistently organized fashion Integrated revision control is a key feature of wiki software packages such as MediaWiki, TWiki, etc. Wiki software is a type of Collaborative software that runs a Wiki system MediaWiki is a web-based Wiki software application used by all projects of the Wikimedia Foundation, all wikis hosted by Wikia, and Twiki is a Fictional character on the TV show Buck Rogers in the 25th Century. 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. A wiki is a page or collection of Web pages designed to enable anyone who accesses it to contribute or modify content using a simplified Markup language.

Software tools for revision control are increasingly recognized as being necessary for the organization of multi-developer projects. This is a list of notable Software for Revision control. Distributed model In the distributed approach, each developer works directly with their own [1]

Contents

Overview

Engineering revision control developed from formalized processes based on tracking revisions of early blueprints or bluelines. Whiteprint is the commercial terminology to describe document reproduction using the Diazo chemical process 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 engineering is the application of a systematic disciplined quantifiable approach to the development operation and maintenance of Software. Software developers sometimes use revision control software to maintain documentation and configuration files as well as source code. A software developer is a person or organization concerned with facets of the software development process wider than design and coding a somewhat broader scope of In Computing, configuration files, or config files', are used to configure the initial settings for some Computer programs They are used 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. Product data management ( PDM) is the business function within Product lifecycle management that is responsible for the creation management and publication of

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). A software bug (or just “bug” is an error flaw mistake Failure, fault or “undocumented feature” in a Computer program that prevents it 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.

Baselines, labels, and tags

Most often only one of the terms baseline, label, or tag are used in documentation or discussion and can be considered synonyms. Most revision control tools will use only one of baseline, label, or tag to refer to the action of identifying a snapshot ("label the project") or the record of the snapshot ("try it with baseline X"). However, in most projects some snapshots are more significant than others, such as those used to indicate published releases, branches, or milestones.

When both the term baseline and either of label or tag are used together in the same context, label and tag are usually used to refer to the mechanism within the tool of identifying or making the record of the snapshot and baseline is used to indicate increased significance of any given label or tag.

Baseline is the term used in most formal discussion of configuration management. Configuration management is the process of managing change in hardware software firmware documentation measurements etc Configuration management (CM is a field of Management that focuses on establishing and maintaining consistency of a product's performance and its functional and physical attributes

Compression

Most revision control software can use delta compression, which retains only the differences between successive versions of files. Delta encoding is a way of storing or transmitting Data in the form of differences between sequential data rather than complete 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. A server is a Computer dedicated to providing one or more services over a computer network typically through a request-response routine 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. In Computer science, especially in the fields of Computer programming (see also Concurrent programming, Parallel programming) Operating systems 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 edit the same file at the same time. In the field of Software development, the Concurrent Versions System ( CVS) also known as the Concurrent Versioning System, provides a Version 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 changes from the first developer are preserved when the other developers 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 (DRCS) 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:

There are two types of distributed systems: open and closed. Open systems are tuned more to open-source development, and closed systems to traditional, single baseline, development.

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:

One of the first open systems was BitKeeper, notable for its use in the development of the Linux kernel. BitKeeper is a Software tool for Distributed revision control ( Configuration management, SCM, etc Linux is an operating system kernel used by a family of Unix-like Operating systems These are popularly termed Linux operating systems and A later decision by the makers of BitKeeper to restrict its licensing led the Linux developers on a search for a free replacement[4]. Common open systems now in free use are:

Closed systems

A closed system of distributed revision control is based on a replicated database. Mercurial is a Cross-platform, Distributed revision control tool for Software developers It is mainly implemented using the Python programming Monotone is an Open source Software tool for Distributed revision control. SVK (also written svk) is a decentralized Version control system written in Perl, with a hierarchical distributed design comparable to centralized deployment The following tables compare general and technical information for notable Revision control and Software configuration management (SCM Software. Replication is the process of sharing information so as to ensure consistency between redundant resources such as Software or Hardware components to improve reliability A Computer Database is a structured collection of records or data that is stored in a computer system A check-in is equivalent to a distributed commit. In the context of Computer science and Data management, commit refers to the idea of making a set of tentative changes permanent Successful commits create a single baseline. An example of a closed distributed system is Code Co-op. Code Co-op is the Peer-to-peer Version control system made by Reliable Software.

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. In Computing, an integrated development environment ( IDE) is a Software application that provides comprehensive facilities to Computer programmers IntelliJ IDEA is a commercial Java IDE by the company JetBrains. In Computing, Eclipse is a Software platform comprising extensible Application frameworks tools and a Runtime library for Software Microsoft Visual Studio is the main Integrated Development Environment (IDE from Microsoft. NetBeans IDE comes with integrated version control support. NetBeans refers to both a platform for the development

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. Configuration management is the process of managing change in hardware software firmware documentation measurements etc See the discussion of baselines, labels, and tags.
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. Branching, in Revision control and Software configuration management, is the duplication of an object under revision control (such as a source code file or a
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.
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.
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.
Label 
See tag.
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.
Repository 
The repository is where the current and historical file data is stored, often on a server. Sometimes also called a depot (e. g. with SVK, AccuRev and Perforce). SVK (also written svk) is a decentralized Version control system written in Perl, with a hierarchical distributed design comparable to centralized deployment AccuRev is a commercial Software Configuration Management (SCM tool developed by AccuRev Inc Perforce is a commercial proprietary Revision control system developed by Perforce Software Inc
Resolve 
The act of user intervention to address a conflict between different changes to the same document.
Reverse integration 
The process of merging different team branches into the main trunk of the versioning system.
Revision 
Also version: A version is any change in form. In SVK, a Revision is the state at a point in time of the entire tree in the repository. SVK (also written svk) is a decentralized Version control system written in Perl, with a hierarchical distributed design comparable to centralized deployment
Tag 
A tag or label refers to an important snapshot in time, consistent across many files. These files at that point may all be tagged with a user-friendly, meaningful name or revision number. See the discussion of baselines, labels, and tags.
Trunk
The unique line of development that is not a branch (sometimes also called Baseline or Mainline)
Update 
An update (or sync) merges changes that have been made in the repository (e. g. by other people) into the local working copy.
Working copy
The working copy is the local copy of files from a repository, at a specific time or revision. All work done to the files in a repository is initially done on a working copy, hence the name. Conceptually, it is a sandbox. A sandbox is a testing (or virtual) environment that isolates untested code changes and outright experimentation from the production environment or

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. Comments on Open Source Software / Free Software (OSS/FS) Software Configuration Management (SCM) Systems. Retrieved on 2007-05-08. Year 2007 ( MMVII) was a Common year starting on Monday of the Gregorian calendar in the 21st century. Events 589 - Reccared summons the Third Council of Toledo 1450 - Jack Cade's Rebellion: Kentishmen
  3. ^ a b O'Sullivan, Bryan. Distributed revision control with Mercurial. Retrieved on 2007-07-13. Year 2007 ( MMVII) was a Common year starting on Monday of the Gregorian calendar in the 21st century. Events 1174 - William I of Scotland, a key rebel in the Revolt of 1173-1174, is captured at Alnwick by forces loyal to
  4. ^ "Bitmover ends free Bitkeeper, replacement sought for managing Linux kernel code", Wikinews, 2005-04-07. Year 2005 ( MMV) was a Common year starting on Saturday (link displays full calendar of the Gregorian calendar. Events 529 - First draft of Corpus Juris Civilis (a fundamental work in Jurisprudence) is issued by Eastern Roman Emperor  
  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

External links

The history of Software configuration management (SCM in Computing can be traced back as early as the 1950s, when CM (for Configuration Management The following tables compare general and technical information for notable Revision control and Software configuration management (SCM Software. Configuration management (CM is a field of Management that focuses on establishing and maintaining consistency of a product's performance and its functional and physical attributes This is a list of notable Software for Revision control. Distributed model In the distributed approach, each developer works directly with their own In Software development, a neutral build is a build that reflects the current state of the Source code checked into the Source code Version In Computer science, the Scientific Community Metaphor is one way of understanding scientific communities. In Software engineering, software configuration Application lifecycle management (ALM regards the process of delivering Software as a continuously repeating cycle of inter-related steps definition design development testing Software versioning is the process of assigning either unique version names or unique version numbers to unique states of Computer software. Source tracking pertains to the ability of some Hypertext systems to rigorously track the exact source of every document or partial document included in the system that SyncML ( Synchronization Markup Language) is the former name (currently referred to as Open Mobile Alliance Data Synchronization and Device Management) Web-based Distributed Authoring and Versioning, or WebDAV, is a set of extensions to the Hypertext Transfer Protocol (HTTP that allows users to collaboratively edit A versioning file system is any computer File system which allows a Computer file to exist in several versions at the same time Files-11, also known as on-disk structure, is the File system used by Hewlett-Packard 's OpenVMS Operating system, and also (in a simpler Open Virtual Memory System ( OpenVMS) initially known just as Virtual Memory System ( VMS) is the name of a High-end Computer server Fossil is the default File system in Plan 9 from Bell Labs. It serves the network protocol 9P and runs as a User space daemon, like Plan 9 from Bell Labs is a Distributed operating system, primarily used for research In Computing, ZFS is a File system designed by Sun Microsystems for the Solaris Operating System. OpenSolaris is an Open source project created by Sun Microsystems to build a developer community around Solaris Operating System technology
© 2009 citizendia.org; parts available under the terms of GNU Free Documentation License, from http://en.wikipedia.org
Dapyx Software network: MP3 Explorer | Ebook Manager | Zenithic