In
software development
Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invol ...
,
version control
In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
is a class of systems responsible for managing changes to
computer programs
A computer program is a sequence or set of instructions in a programming language for a computer to execute. Computer programs are one component of software, which also includes documentation and other intangible components.
A computer program i ...
or other collections of information such that revisions have a logical and consistent organization. The following tables include general and technical information on notable version control and
software configuration management
In software engineering, software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software, part of the larger cross-disciplinary field of configuration management. SCM practices include revision ...
(SCM)
software
Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work.
At the lowest programming level, executable code consists ...
. For SCM software not suitable for
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
, see
Comparison of open-source configuration management software
This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.
Basic properties
" ...
.
General information
Table explanation
*''Repository model'' describes the relationship between various copies of the
source code repository
In version control systems, a repository is a data structure that stores metadata for a set of files or directory structure. Depending on whether the version control system in use is distributed, like Git or Mercurial, or centralized, like Subversi ...
. In a
client–server model
The client–server model is a distributed application structure that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate over ...
, users access a master repository via a
client
Client(s) or The Client may refer to:
* Client (business)
* Client (computing), hardware or software that accesses a remote service on another computer
* Customer or client, a recipient of goods or services in return for monetary or other valuabl ...
; typically, their local machines hold only a working copy of a project tree. Changes in one working copy must be committed to the master repository before they are propagated to other users. In a
distributed Distribution may refer to:
Mathematics
*Distribution (mathematics), generalized functions used to formulate solutions of partial differential equations
*Probability distribution, the probability of a particular value or value range of a varia ...
model, repositories act as peers, and users typically have a local repository with version history available, in addition to their working copies.
*''Concurrency model'' describes how changes to the working copy are managed to prevent simultaneous edits from causing nonsensical data in the repository. In a ''lock'' model, changes are disallowed until the user requests and receives an
exclusive lock on the file from the master repository. In a ''merge'' model, users may freely edit files, but are informed of possible conflicts upon checking their changes into the repository, whereupon the version control system may
merge changes on both sides, or let the user decide when
conflicts
Conflict may refer to:
Arts, entertainment, and media
Films
* ''Conflict'' (1921 film), an American silent film directed by Stuart Paton
* ''Conflict'' (1936 film), an American boxing film starring John Wayne
* ''Conflict'' (1937 film) ...
arise. Distributed version control systems usually use a merge concurrency model.
Technical information
Table explanation
* ''Software'': The name of the application that is described.
* ''Programming language'': The coding language in which the application is being developed
* ''Storage Method'': Describes the form in which files are stored in the repository. A ''snapshot'' indicates that a committed file(s) is stored in its entirety—usually compressed. A ''
changeset
In version control software, a changeset (also known as commit and revision) is a set of alterations packaged together, along with meta-information about the alterations. A changeset describes the exact differences between two successive versio ...
'', in this context, indicates that a committed file(s) is stored in the form of a difference between either the previous version or the next.
* ''Scope of change'': Describes whether changes are recorded for individual ''files'' or for entire directory ''trees''.
* ''
Revision IDs'': are used internally to identify specific versions of files in the repository. Systems may use ''
pseudorandom
A pseudorandom sequence of numbers is one that appears to be statistically random, despite having been produced by a completely deterministic
Determinism is a philosophical view, where all events are determined completely by previously exi ...
'' identifiers, content hashes of revisions, or filenames with sequential version numbers (''namespace''). With Integrated Difference, revisions are based on the Changesets themselves, which can describe changes to more than one file.
* ''Network protocols'': lists the
protocols
Protocol may refer to:
Sociology and politics
* Protocol (politics), a formal agreement between nation states
* Protocol (diplomacy), the etiquette of diplomacy and affairs of state
* Etiquette, a code of personal behavior
Science and technology
...
used for
synchronization of changes.
* ''Source code size'': Gives the size of the source code in megabytes.
Features
Table explanation
* ''Software'': The name of the application that is described.
* ''
Atomic commit
In the field of computer science, an atomic commit is an operation that applies a set of distinct changes as a single operation. If the changes are applied, then the atomic commit is said to have succeeded. If there is a failure before the atomic ...
s'': refers to a guarantee that all changes are made, or that no change at all will be made.
* ''File renames'': describes whether a system allows files to be renamed while retaining their version history.
* ''Merge file renames'': describes whether a system can merge changes made to a file on one branch into the same file that has been renamed on another branch (or vice versa). If the same file has been renamed on both branches then there is a rename conflict that the user must resolve.
* ''
Symbolic link
In computing, a symbolic link (also symlink or soft link) is a file whose purpose is to point to a file or directory (called the "target") by specifying a path thereto.
Symbolic links are supported by POSIX and by most Unix-like operating system ...
s'': describes whether a system allows revision control of symbolic links as with regular files. Versioning symbolic links is considered by some people a feature and some people a security breach (e.g., a symbolic link to /etc/passwd). Symbolic links are only supported on select platforms, depending on the software.
* ''Pre-/post-event hooks'': indicates the capability to trigger commands before or after an action, such as a commit, takes place.
* ''
Signed revisions'': refers to integrated digital signing of revisions, in a format such as
OpenPGP
Pretty Good Privacy (PGP) is an encryption program that provides cryptographic privacy and authentication for data communication. PGP is used for signing, encrypting, and decrypting texts, e-mails, files, directories, and whole disk partitio ...
.
* ''Merge tracking'': describes whether a system remembers what changes have been merged between which branches and only merges the changes that are missing when merging one branch into another.
* ''
End of line conversions'': describes whether a system can adapt the end of line characters for text files such that they match the end of line style for the operating system under which it is used. The granularity of control varies. Subversion, for example, can be configured to handle EOLs differently according to the file type, whereas Perforce converts all text files according to a single, per-client setting.
* ''
Tags'': indicates if meaningful names can be given to specific revisions, regardless of whether these names are called tags or labels.
* ''International support'': indicates if the software has support for multiple language environments and operating system
* ''Unicode filename support'': indicates if the software has support for interoperations under
file system
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
s using different
character encoding
Character encoding is the process of assigning numbers to Graphics, graphical character (computing), characters, especially the written characters of Language, human language, allowing them to be Data storage, stored, Data communication, transmi ...
s.
* ''Supports large repos'': Can the system handle repositories of around a gigabyte or larger effectively?
Advanced features
Table explanation
* ''keyword expansion'': supports automatic expansion of keywords such as file revision number.
* ''interactive commits'': interactive commits allow the user to cherrypick common lines of code used to anchor files (patch-hunks) that become part of a commit (leaving unselected changes as changes in the working copy), instead of having only a file-level granularity.
* ''external references'': embedding of foreign repositories in the source tree
* ''partial checkout/clone'': ability to check out or clone only a specified subdirectory from a repository.
* ''permissions'': tracks file permission bits in the revision history.
* ''
timestamp
A timestamp is a sequence of characters or encoded information identifying when a certain event occurred, usually giving date and time of day, sometimes accurate to a small fraction of a second. Timestamps do not have to be based on some absolut ...
preservation'': overwrites the ''last modified'' filesystem attribute with the commit time upon checkout.
* ''custom automatic merge tool'': automatic merging can be attempted by any tool of the user's choice (hopefully configurable on a per-file basis)
* ''supported formats'': either read/write support or read-only (conversion, potentially repeated)
* ''shared build cache of derived objects'': the ability to automatically substitute (wink-in) derived-objects that were built by other confederated clients that share exactly the same dependencies instead of rebuilding them locally
Basic commands
Table explanation
* Commands in green rectangles that are not surrounded by
quare brackets Quare is a subset of queer theory exploring the intersectionality of race and sexuality.
Quare could also mean:
* “The Quare Fellow”, a Brendan Behan play produced in 1954
* quare impedit
In English law, ''quare impedit'' was a writ commenc ...
are at an interactive command-line prompt. Text in
quare brackets Quare is a subset of queer theory exploring the intersectionality of race and sexuality.
Quare could also mean:
* “The Quare Fellow”, a Brendan Behan play produced in 1954
* quare impedit
In English law, ''quare impedit'' was a writ commenc ...
is an explanation of where to find equivalent functionality.
* ''repository init'': Create a new empty repository (i.e., version control database)
* ''clone'': Create an identical instance of a repository (in a safe transaction)
* ''pull'': Download revisions from a remote repository to a local repository
* ''push'': Upload revisions from a local repository to a remote repository
* ''local branches'': Create a local branch that does not exist in the original remote repository
* ''checkout'': Create a local working copy from a (remote) repository
* ''update'': Update the files in a working copy with the latest version from a repository
* ''lock'': Lock files in a repository from being changed by other users
* ''add'': Mark specified files to be added to repository at next commit
* ''remove'': Mark specified files to be removed at next commit (note: keeps cohesive revision history of before and at the remove.)
* ''move'': Mark specified files to be moved to a new location at next commit
* ''copy'': Mark specified files to be copied at next commit
* ''merge'': Apply the differences between two sources to a working copy path
* ''commit'': Record changes in the repository
* ''revert'': Restore working copy file from repository
* ''generate bundle file'': Create a file that contains a compressed set of changes to a given repository
* ''rebase'': Forward-port local commits to the updated upstream head
Advanced commands
Table explanation
* Commands in green rectangles that are not surrounded by
quare brackets Quare is a subset of queer theory exploring the intersectionality of race and sexuality.
Quare could also mean:
* “The Quare Fellow”, a Brendan Behan play produced in 1954
* quare impedit
In English law, ''quare impedit'' was a writ commenc ...
are at an interactive command-line prompt. Text in
quare brackets Quare is a subset of queer theory exploring the intersectionality of race and sexuality.
Quare could also mean:
* “The Quare Fellow”, a Brendan Behan play produced in 1954
* quare impedit
In English law, ''quare impedit'' was a writ commenc ...
is an explanation of where to find equivalent functionality.
* ''command aliases'': create custom aliases for specific commands or combination thereof
* ''lock/unlock'': exclusively lock a file to prevent others from editing it
* ''shelve/unshelve'': temporarily set aside part or all of the changes in the working directory
* ''rollback'': remove a patch/revision from history
* ''cherry-picking'': move only some revisions from a branch to another one (instead of merging the branches)
* ''bisect'': binary search of source history for a change that introduced or fixed a regression
* '' incoming/outgoing'': query the differences between the local repository and a remote one (the patches that would be fetched/sent on a pull/push)
* ''grep'': search repository for lines matching a pattern
* ''record'': include only some changes to a file in a commit and not others
User interfaces
Table explanation
* ''Software'': The name of the application that is described.
* ''Web Interface'': Describes whether the software application contains a web interface. A web interface could allow the software to post diagnostics data to a website, or could even allow remote control of the software application.
* ''GUIs'': A GUI is a graphical user interface. If a software product features a GUI its functionality can be accessed through application windows as opposed to accessing functionality based upon typing commands at the command prompt such as a DOS interface.
* ''Plug-ins'': functionality is available through an Integrated Development Environment. Minimum functionality should be to list the revision state of a file and check in/check out files.
History and adoption
Table explanation
* ''Software'': The name of the application that is described.
* ''History'': briefly describes the software's origins and development.
* ''Notable users'': is a list of well known projects using the software as their ''primary'' revision control system, excluding the software itself, followed by a link to a full list if available.
See also
*
Comparison of source-code-hosting facilities
A source-code-hosting facility (also known as forge) is a file archive and web hosting facility for source code of software, documentation, web pages, and other works, accessible either publicly or privately. They are often used by open-source ...
*
List of version-control software
This is a list of notable software for version control.
Local data model
In the local-only approach, all developers must use the same file system.
Open source
* Revision Control System (RCS) – stores the latest version and backward del ...
Notes
References
External links
Developer Adoption Surveyfrom
Stack Overflow
In software, a stack overflow occurs if the call stack pointer exceeds the stack bound. The call stack may consist of a limited amount of address space, often determined at the start of the program. The size of the call stack depends on many fac ...
{{Version control software
Version control software