Re: Conflict detection in DeltaV using ServerSide Workspace

Geoffrey M Clemm <[email protected]> Tue, 24 Jun 2008 11:18:31 -0400
Newsgroups gmane.ietf.deltav
Message-ID <OF064409EF.9EAD2B02-ON85257472.00530701-85257472.005417C8@us.ibm.com>
This is a multipart message in MIME format.
--=_alternative 005413B385257472_=
Content-Type: text/plain; charset="US-ASCII"

A given file can only have one checkout in a given workspace.
So if user A checks out a file in the server-side workspace, an attempt by 
user B to checkout that same file in that same workspace will fail (with 
an "already checked out" error).

If you want to use a single server-side workspace for all the users, you 
would not register the checkout on the server.  Instead, the client for a 
given user would GET the files that the user wants, and remember what 
versions of those files it downloaded..  When the user tries to "checkin" 
a change, the client would attempt to checkout the file, and retrieve the 
CHECKED_OUT version property.  If the CHECKED_OUT version was the same as 
the one the client originally downloaded, the client can just PUT the new 
content, and CHECKIN.  If the CHECKED_OUT version is different, the client 
would have to notify the user that a "merge conflict" has occurred, peform 
a merge of the users version with the CHECKED_OUT version, and then 
checkin the results of the merge.

Cheers,
Geoff 

[email protected] wrote on 06/24/2008 07:11:02 AM:

> 
> Hello,
> 
> I want to allow simultaneous editing of resources by multiple users with
> WebDAV/DeltaV. For that, I use a ServerSide-Workspace for every user.
> The user can "check out" a file in his private workspace and work on it.
> After that, the user can "check in" all of his files with the DeltaV
> activity feature. Now I am looking for a standard "serverside"-way to
> detect conflicts when both users try to commit their changes on the same
> file. Is there any standard way to detect these conflicts with
> WebDAV/DeltaV on serverside?
> 
> My idea was (like in Subversion/mod_dav_svn), that the server keeps
> track of the revisions, that are in the private workspace of the user,
> to detect conflicts. 
> 
> Here you can see a sequence diagram that illustrates the operations. 
> 
> http://www.haifischmade.de/apache2-default/seqConWebDAV.jpg
> 
> User A and user B check out the file Foo. The server keeps track that
> they both checked out version 1 of the file Foo. Now both users start to
> edit the file in their own workspace. Then user A finishes editing and
> checks in his workspace (ActivityUserA). Now the server increments the
> version of file Foo up to 2. Now user B wants to check in his file, but
> the server recognizes that UserB has changed the file based on version 1
> and so the server rejects the check in. 
> 
> Is this the right way? 

--=_alternative 005413B385257472_=
Content-Type: text/html; charset="US-ASCII"


<br><tt><font size=2>A given file can only have one checkout in a given
workspace.</font></tt>
<br><tt><font size=2>So if user A checks out a file in the server-side
workspace, an attempt by user B to checkout that same file in that same
workspace will fail (with an &quot;already checked out&quot; error).</font></tt>
<br>
<br><tt><font size=2>If you want to use a single server-side workspace
for all the users, you would not register the checkout on the server. &nbsp;Instead,
the client for a given user would GET the files that the user wants, and
remember what versions of those files it downloaded.. &nbsp;When the user
tries to &quot;checkin&quot; a change, the client would attempt to checkout
the file, and retrieve the CHECKED_OUT version property. &nbsp;If the CHECKED_OUT
version was the same as the one the client originally downloaded, the client
can just PUT the new content, and CHECKIN. &nbsp;If the CHECKED_OUT version
is different, the client would have to notify the user that a &quot;merge
conflict&quot; has occurred, peform a merge of the users version with the
CHECKED_OUT version, and then checkin the results of the merge.</font></tt>
<br><tt><font size=2><br>
Cheers,<br>
Geoff </font></tt>
<br>
<br><tt><font size=2>[email protected] wrote on 06/24/2008
07:11:02 AM:<br>
<br>
&gt; <br>
&gt; Hello,<br>
&gt; <br>
&gt; I want to allow simultaneous editing of resources by multiple users
with<br>
&gt; WebDAV/DeltaV. For that, I use a ServerSide-Workspace for every user.<br>
&gt; The user can &quot;check out&quot; a file in his private workspace
and work on it.<br>
&gt; After that, the user can &quot;check in&quot; all of his files with
the DeltaV<br>
&gt; activity feature. Now I am looking for a standard &quot;serverside&quot;-way
to<br>
&gt; detect conflicts when both users try to commit their changes on the
same<br>
&gt; file. Is there any standard way to detect these conflicts with<br>
&gt; WebDAV/DeltaV on serverside?<br>
&gt; <br>
&gt; My idea was (like in Subversion/mod_dav_svn), that the server keeps<br>
&gt; track of the revisions, that are in the private workspace of the user,<br>
&gt; to detect conflicts. <br>
&gt; <br>
&gt; Here you can see a sequence diagram that illustrates the operations.
<br>
&gt; <br>
&gt; http://www.haifischmade.de/apache2-default/seqConWebDAV.jpg<br>
&gt; <br>
&gt; User A and user B check out the file Foo. The server keeps track that<br>
&gt; they both checked out version 1 of the file Foo. Now both users start
to<br>
&gt; edit the file in their own workspace. Then user A finishes editing
and<br>
&gt; checks in his workspace (ActivityUserA). Now the server increments
the<br>
&gt; version of file Foo up to 2. Now user B wants to check in his file,
but<br>
&gt; the server recognizes that UserB has changed the file based on version
1<br>
&gt; and so the server rejects the check in. <br>
&gt; <br>
&gt; Is this the right way? <br>
</font></tt>
--=_alternative 005413B385257472_=--