Re[3]: More Check-out/in Branch Semantics
Tue, 20 Oct 1998 13:47:18 -0400

Date: Tue, 20 Oct 1998 13:47:18 -0400
Message-ID: <>
To: "Geoffrey M. Clemm" <>,
Subject: Re[3]: More Check-out/in Branch Semantics

     David said:
     I incline to thinking that the policy decisions should _all_ be made 
     by servers, and that clients should be offered all of the request 
     options required to work under reasonable server policies. It seems to 
     me that policy implementation in clients may make some policies 
     unavailable to some users even when using servers that support those 
     policies. It also makes clients more complex rather than simpler.
I agree that policy should be enforced by the server whenever posible and 
that the protocol should be designed with this in mind.

     In the "forcebranch" scenario, the client must remember _both_ the 
     main branch name, and the name of the "reserved" branch, and whether 
     the user's intention is to check into the one or the other. They could 
     be forcing a branch because they _intend to create a new branch_ or 
     because they want to reserve a new branch in case they _don't_ check 
     back into the mainline. The server doesn't know this, so the client 
     must remember it, or prompt the user at every checkin.
I see your point.  However, it was not my intention that the client be made 
to remember either of the branches.  The assumption I was making was that 
the client would decide at checkin if the branch was still desired, or if a 
merge was desired.  The branches involved can be derived from the state of 
the Vgraph and who owns which revisions.

Now if you want the CHECKOUT options to completely drive the behavior (at 
least the default behavior) of CHECKIN, then I can see you need more than 
just ForceBranch.

So now I see Geoff's original point.  If you use -reserve and can also 
designate a branch name indicating a branch other than the original branch, 
this serves the same purpose as -ForceBranch.

If we can also allow a new branch name, or some how indicate that a new 
branch is to be created (without even specifying a branch name), I think 
that solves all my original issues.