Welcome to WebmasterWorld Guest from 188.8.131.52
Version control systems use locks to prevent the same files from being modified by two developers simultaneously. If a lock is used while revising a file, no one can modify the file until it is unlocked. Locking and unlocking can be controlled by checking in or checking out versions.
In a broader sense though a software project may have many parts, separate but dependent upon one another, and the update semantics of a complex system can become... well, quite complex. A proper version control system would be aware of the aspects of the specific project, and take care that all of the update semantics, for each separate section, and for how these sections come together, are followed appropriately.
Some features that I came up with: