On a merging-based version control system (i.e., most modern ones; see VCS Merging), C-x v v does the following:
If committing to a shared repository, the commit may fail if the repository that has been changed since your last update. In that case, you must perform an update before trying again. On a decentralized version control system, use C-x v + (see Pulling / Pushing) or C-x v m (see Merging). On a centralized version control system, type C-x v v again to merge in the repository changes.
These rules also apply when you use RCS in its non-locking mode, except that changes are not automatically merged from the repository. Nothing informs you if another user has committed changes in the same file since you began editing it; when you commit your revision, his changes are removed (however, they remain in the repository and are thus not irrevocably lost). Therefore, you must verify that the current revision is unchanged before committing your changes. In addition, locking is possible with RCS even in this mode: C-x v v with an unmodified file locks the file, just as it does with RCS in its normal locking mode (see VC With A Locking VCS).