You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Bo Chen <bo...@gmail.com> on 2013/03/31 00:37:27 UTC

one question about the editor in libsvn_ra_svn/editorp.c

In subversion/libsvn_ra_svn/editop.c
/*
 * Both the client and server in the svn protocol need to drive and
 * consume editors.  For a commit, the client drives and the server
 * consumes; for an update/switch/status/diff, the server drives and
 * the client consumes.  This file provides a generic framework for
 * marshalling and unmarshalling editor operations over an svn
 * connection; both ends are useful for both server and client.
 */

I am wondering why we need the concept of editor here in SVN. What does it
mean by "for a commit, the client drives and the server consumes
(editors)"? I am thinking a commit operation, can't we just simply send the
delta from the client to the server? Why editor?

Thanks.

Bo

Re: one question about the editor in libsvn_ra_svn/editorp.c

Posted by Ben Reser <be...@reser.org>.
On Sat, Mar 30, 2013 at 4:37 PM, Bo Chen <bo...@gmail.com> wrote:
> In subversion/libsvn_ra_svn/editop.c
> /*
>  * Both the client and server in the svn protocol need to drive and
>  * consume editors.  For a commit, the client drives and the server
>  * consumes; for an update/switch/status/diff, the server drives and
>  * the client consumes.  This file provides a generic framework for
>  * marshalling and unmarshalling editor operations over an svn
>  * connection; both ends are useful for both server and client.
>  */
>
> I am wondering why we need the concept of editor here in SVN. What does it
> mean by "for a commit, the client drives and the server consumes (editors)"?
> I am thinking a commit operation, can't we just simply send the delta from
> the client to the server? Why editor?

The editor interfaces in Subversion provide a way for one side to
describe a set of changes and the other side to receive and apply
them.  When a commit is happening the client is describing the changes
and the server is receiving them.  When an update/switch/status/diff
is happening the server is describing the changes and the client is
receiving them.  The delta format is not sufficient to describe all
the changes that can be made, it can only describe content changes of
a file.  Subversion, however does not merely version the contents of
the files (as is often the case in most other version control system)
but also versions the tree.  So beyond just the delta (which is the
apply_textdelta bit of the editor interface) but you have methods for
adding and removing nodes (file or directories) as well as
manipulating properties that are set on them.

You probably want to read this to understand editors:
http://people.apache.org/~hwright/svn/doc/api/trunk/structsvn__delta__editor__t.html