On Sat, Mar 30, 2013 at 4:37 PM, Bo Chen <bo.irvine.c...@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