Categorized
New page
A '''revision control system''' is a software system with the primary goal of maintaining multiple versions and historical information for files. This can be very useful for both individual users and in shared environments. Revision control systems are very often used by teams of [[software developer]]s to share and maintain [[source code]].
== Repositories ==
Files, typically of any type, are placed within a ''repository'' where they can be updated without losing past versions. The repository may be maintained on the local computer system or a remote server. Some systems, such as [[subversion]] use a centralized model with a single repository, while others, such as [[git]] use a distributed model with local synchronized repositories.
Most systems expose their repository as something that looks similar to a file system, with directories, files, and attributes. This lets users interact with their files in a way they are already familiar with. Often the fact that a local directory structure is under the control of a revision control system is seamless to the user and applications.
== Actions ==
Once a repository is set up, a set of actions can be performed within the revision control system:
* Files and directories can be added.
* Files and directories can be ''checked out''. For a centralized system that typically entails creating a local copy of files within the repository.
* Locally performing an ''update'' with get the latest version of files and modify local files to match. For text files this might include merging changes instead of completely overwriting the file.
* ''Committing'' or ''checking in'' pushes local changes into the repository. Past versions are automatically maintained while the current revision, or ''head'', is now the latest updated version.
* ''Branching'' is effectively making a copy in the repository, where separate versions of the same file can be maintained in parallel. This is very useful in computer source code where multiple versions of an application may be maintained for years.
* ''Merging'' takes multiple versions of a file, either from branching or from a file's history, and brings them together into the current version of the file.
[[Category:Applications]]