Locking vs Lockless Version Management Models


The problem to avoid: changes by users overwriting each other

The problem to avoid: changes from users overwriting each other

Lock-modify-unlock versioning model:

Lock-Modify-Unlock Versioning Model

Disadvantages of Lock-Modify-Unlock versioning model:

  • Locking may cause administrative problems. Sometimes Harry will lock a file and then forget about it. Meanwhile, because Sally is still waiting to edit the file, her hands are tied. And then Harry goes on vacation. Now Sally has to get an administrator to release Harry’s lock. The situation ends up causing a lot of unnecessary delay and wasted time.
  • Locking may cause unnecessary serialization. What if Harry is editing the beginning of a text file, and Sally simply wants to edit the end of the same file? These changes don’t overlap at all. They could easily edit the file simultaneously, and no great harm would come, assuming the changes were properly merged together. There’s no need for them to take turns in this situation.
  • Locking may create a false sense of security. Suppose Harry locks and edits file A, while Sally simultaneously locks and edits file B. But what if A and B depend on one another, and the changes made to each are semantically incompatible? Suddenly A and B don’t work together anymore. The locking system was powerless to prevent the problem—yet it somehow provided a false sense of security. It’s easy for Harry and Sally to imagine that by locking files, each is beginning a safe, insulated task, and thus not bother discussing their incompatible changes early on. Locking often becomes a substitute for real communication.

Copy-Modify-Merge Versioning Model:

Copy-Modify-Merge Versioning Model (1 of 2)

Copy-Modify-Merge Versioning Model (2 of 2)

Source: http://svnbook.red-bean.com/en/1.4/svn.basic.vsn-models.html