Suppose two people ("Alice" and "Bob") are working on the same file. Both check out the current version of the file.
Alice finishes first, and commits a new revision of the file.
In an ideal world, Bob would do an "svn update" after Alice's commit, and then Bob would have Alice's new version as a starting point, and everything would be great. But things could go wrong if
* Bob and Alice are working at the same time
* Bob goes to an old working directory and edits the file without first saying "svn update"
So let's suppose Bob now tries to commit his version of the file, which incorporates Bob's changes but none of Alice's changes. If Subversion let Bob check in this version, it would be throwing away Alice's work, so that's not what happens. Instead, Subversion points out the "Conflict" in this situation.
Generally what SVN does is give Bob all three versions of the file:
* The version Bob and Alice both started from
* The version Alice checked in
* The version Bob was trying to check in
It then becomes Bob's problem to "resolve" the conflict by making a fourth version of the file incorporating
both his and Alice's improvements. Once he does this he tells SVN that the conflict has been resolved, by running the __"svn resolved"__ command, after which SVN will let him check the new new version.