Repository Sally Harry Ira write read read A centralized client-server system.
A A A A A’ A” A’ A” A’ A” A’ A” Repository Repository Repository read read Harry Sally Harry Sally A A A’ A” Two users read the same file. They both begin to edit their copies. Repository Repository A’ A” THE PROBLEM write write Harry Sally Harry Sally A’ A” A’ A” Harry publishes his version first. Sally accidentally overwrites Harry’s version!
A A A A’ A’ A’ A’ A’ A’ Repository Repository Repository Repository LOCK LOCK read Harry Sally Harry Sally A A’ Harry “locks” file A, then copies it for editing. While Harry edits, Sally’s lock attempt fails. Repository Repository A’ A’ THE LOCK-MODIFY-UNLOCK MODEL read write UNLOCK LOCK Harry Sally Harry Sally A’ A’ A’ Harry writes his version, then releases his lock. Now Sally can lock, read, and edit the latest version.
A A A A A’ A” A” A” A’ A” A’ A” Repository Repository Repository read read Harry Sally Harry Sally A A A’ A” Two users copy the same file. They both begin to edit their copies. Repository Repository A” A” THE COPY-MODIFY-MERGE MODEL, page 1 write write Harry Sally Harry Sally A’ A” A’ A” Sally publishes her version first. Harry gets an “out-of-date” error!
A” A” A’ A” A” A* A” A* A* A* A” A* A* Repository Repository read Harry Sally Harry Sally A’ A” A” A* A” Harry compares the latest version to his own. A new merged version is created. Repository Repository A* A* THE COPY-MODIFY-MERGE MODEL, page 2 write read Harry Sally Harry Sally A* A” A* A* The merged version is published. Now both users have each others’ changes.
/ calc Makefile integer.c button.c paint Makefile canvas.c brush.c
1 2 3