Version control (also known as revision control or source control) is the management of multiple versions of the same unit of information. It is most commonly used in situations where teams must manage the ongoing development of critical information in digital documents such as web pages, lists, application source code, art resources, etc. Changes to these documents are identified by a "version number", "version level", or simply "version" and are associated historically with the person making the change. Daisy’s version control, for example, has the initial version of a document assigned the revision number "1". When the first change is made, that version number is incremented to "2" and associated with the person who entered the changes.
Implicit in this version control is the ability to return to any earlier state of the information or design, for cases in which an error has been made. Traditionally, revision control systems have used a centralized model, where all the revision control functions are performed on a shared server.
To prevent "concurrent access" some systems lock files so that only one developer at a time has write access to the central "repository" copies of those files. This is referred to as pessimistic locking. Pessimistic locking prevents users from fetching or updating the same data at the same time. Others, such as CVS, allow multiple developers to edit the same file at the same time and provide facilities to merge changes later. This is referred to as optimistic locking.
Some systems attempt to manage who is allowed to make changes to different aspects of the program, for instance, allowing changes to a file to be checked by a designated reviewer before being added.
http://modxcms.com/forums/index.php?topic=21864.0
Just to give perhaps perhaps a clearer understanding of version control terminology (assuming that I understand it ):
"Checkout" assumes that you will be making local copies of files in the repository, working on them, then "committing" the changes back to the repository to be available to others. Since most of us only have read-only access to the repository, the "commit" part is theoretical.
"Export" is a different process which assumes that you want to make copies of the files but without the intention of editing them and committing the changes.
"Update" allows you to accept the changes to the repository made by others (after you checked your copy out) into your current working copy.
"Merge" lets you merge two separate sets of changes together (usually assuming that various people were working on different parts of the file(s) so there are no conflicts).