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.
The most intuitive interface to SVN on Windows is Tortoise SVN.
It is a fantastic integration of SVN functions into the Windows Explorer. Right-click on folders and files to perform any SVN function.
The difference window is color-coded to show additions, deletions, and modifications, character-by-character.
The merge tool is also quite easy to use.
Although, I don't care for the name, the "blame" function shows who last modified each line of a source file, and the related revision number. I find this very helpful to determine the age of code, and the related comment of that revision's commit. Once one trsusts the version control system, one can stop polluting the source code with old commented code, and other low-value comments with dates, names, and when lines were added and deleted. All of this information can be stored in version control and readily accessed with "blame" without degrading code readability.