lock/checkout/reserve/edit
Christopher Seiwald (seiwald@perforce.com)
Tue, 3 Sep 1996 11:12:29 -0700
With deference to David's work, I'd like to try to straighten out our
nomenclature here. I don't want to say that just because existing
version control products use this terminology then the web based versioning
must as well. But at least _I_ would like to be understood.
Many products on the market are derived from RCS or SCCS (or are in fact
RCS or SCCS), and share their terminology. I'm adding our own product
(Perforce) because its terminology is a superset of the others.
Just to get going, here are the states a VC client can be in w.r.t. a
file/document, and who supports those states:
A) Doesn't have the document in its possesion.
o ClearCase doesn't state A, because with its virtual
filesystem clients are already soaking the filespace of
the repository.
B) Has the document, but not the permission to change it.
o CVS has no state B, because if you have a file you can
change it.
C) Has the document, with the permission to change it.
o RCS and SCCS have no state C -- if you have permission
to change a file, you also have the exclusive lock on it
(state D).
D) Has the document, the permission to change it, and the
lock on the copy in the repository. This client has the
right of way to create the next revision in the repository.
o CVS has no state D, because it doesn't support exclusive
locks.
The transitions:
A->B ClearCase: none (no state A)
CVS: none (no state B)
RCS: "unreserved checkout"
SCCS: "get"
Perforce: "get"
B->C ClearCase: "unreserved checkout".
CVS: none (no state B)
RCS: none (no state C)
SCCS: none (no state C)
Perforce: "edit"
A->C ClearCase: none (no state A)
CVS: "checkout"
RCS: none (no state C)
SCCS: none (no state C)
Perforce: "get" + "edit"
C->D ClearCase: "reserved checkout"
CVS: none (no state D)
RCS: none (no state C)
SCCS: none (no state C)
Perforce: "lock"
B->D ClearCase: "reserved checkout"
CVS: none (no state D)
RCS: "reserved checkout"
SCCS: "edit"
Perforce: "edit" + "lock"
As you can see, it's a mess: ClearCase and RCS use the same term for
two entirely different transitions. Basically, the word "checkout" can
mean any progression from one state to the next, depending on which
product you're using.
Here's what I propose, based on a seat-of-the-pants understanding of
which way the terminology is going:
A->B Proposed: "GET" (HTTP's, mind you)
B->C Proposed: "CHECKOUT"
A->C Proposed: "CHECKOUT"
C->D Proposed: "LOCK"
B->D Proposed: "CHECKOUT" + "LOCK"
N.B. that "CHECKOUT" == "GET for EDIT", previously used.
I'm not suggesting that these are new HTTP verbs, but rather that we
use these terms when hashing out our other ideas.
Comments?
Christopher