Subversion is a client-server open source version control system.
Subversion employs an optimistic approach to file locking to encourage concurrent development. Unlike Microsoft Visual Source Safe, one need not lock a file before editing by explicitly checking it out. In fact the term "check out" has very different meanings in VSS and SVN.
Check Out fetches a copy of one or more files from an SVN repository to create a new working copy of a file or project. A check-out makes no changes to the state of the SVN repository.
Update fetches the latest version of one or more files from the repository, automatically merging changes where possible. In the cases where changes cannot be merged automatically, the file is placed in a "conflicted" state such that a merge can be performed to reconcile the conflict by the user. In my experience, conflicts are rare when division of labor in the team is reasonable. An update makes no changes to the state of the SVN repository. I know, this is unintuitive to the SVN newcomer! Think of it as updating your working copy, not the repository.
Commit posts the changes made in your working copy to the repository and increment the repository revision number. The youngest revision is often referred to as the HEAD revision. SVN revision numbers are maintained at the repository level, unlike VSS where each file gets its own version number.
Add flags a file for addition to the repository once it is committed. The add action, alone, does not alter the state of the repository.
Delete flags a file for deletion from the repository once it is committed. The delete action, alone, does not alter the state of the repository.
Revert discards any changes made to your working copy and restores the file to a previous state. One can revert to any prior version.
Rename renames a file in the working copy, and flags the file to be renamed in the repository once it is committed. The rename action, alone, does not alter the state of the repository.
Copy copies a file in the working copy, and flags the file to be copied in the repository once it is committed. The copy action, alone, does not alter the state of the repository.
Move moves a file in the working copy, and flags the file to be moved in the repository once it is committed. The move action, alone, does not alter the state of the repository.
Tagging associates a symbolic name with a revision so it can be easily referenced. For example one may wish to create tags representing stable releases.
Branches allow a team to work on parallel versions of a code base, for merging at some point in the future.
