Version Control with Subversion - Versioning Models - The Lock-Modify-Unlock Solution
The Lock-Modify-Unlock Solution
Many version control systems use a
lock-modify-unlock model to address the
problem of many authors clobbering each other's work. In this
model, the repository allows only one person to change a file
at a time. This exclusivity policy is managed using locks.
Harry must “lock” a file before he can begin
making changes to it. If Harry has locked a file, then Sally
cannot also lock it, and therefore cannot make any changes to
that file. All she can do is read the file, and wait for
Harry to finish his changes and release his lock. After Harry
unlocks the file, Sally can take her turn by locking and
editing the file.
Figure 2.3, “The lock-modify-unlock solution”
demonstrates this simple solution.
Figure 2.3. The lock-modify-unlock solution
The problem with the lock-modify-unlock model is that it's
a bit restrictive, and often becomes a roadblock for
Locking may cause administrative
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
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
Locking may create a false sense of
Pretend that Harry locks and edits file A, while
Sally simultaneously locks and edits file B. But suppose
that 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
[an error occurred while processing this directive]