[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: progress report & upcoming "Milestone 1"

From: Greg Stein <gstein_at_lyra.org>
Date: 2000-09-26 17:23:23 CEST

On Tue, Sep 26, 2000 at 08:56:55AM +0200, Daniel Stenberg wrote:
> On Mon, 25 Sep 2000, Karl Fogel wrote:
>
> > I've added a bunch more tasks into the TASKS file. Please look them
> > over. Whatever time you can volunteer is most appreciated.
>
> I am willing to contribute, and I found your item number 6 to be something I
> might as well take a stab at. I've written numerous command-line TCP/IP
> clients before.
>
> 6. Start writing a basic command-line client, to talk over the network
> to the Apache-connected Subversion server (see 5).
>
> What exactly would this client do in step 1? I mean protocol-wise, apart from
> TCP/IP.

Ah. Now there is the fun part. You don't have much to worry about, in terms
of networking or protocols or any of that. libsvn_ra_dav does all that.

I don't have the code handy, but essentially you will call
svn_ra_get_update_editor() or svn_ra_get_commit_editor() to get an editor
structure based on the operation you want to perform. Those are then passed
to the appropriate driving code -- something that walks over the WC calling
into the update/commit editor to make changes.

There is also svn_ra_checkout() (or somesuch) to do an initial checkout. You
would pass that a WC editor that is used to effect the changes in the WC.

In other words, the client is really about hooking up stuff that walks a WC
or the server and invokes operations against a given editor.

There will be some "spot" requests, such as fetching log information or
controlling ACLs. I would expect those to be calls against specific
functions in the RA module.

The current design document calls for a "client library" that combines the
necessary elements of the WC and RA libraries into higher-level calls. That
probably still makes a lot of sense. The cmd-line client is then just some
calls into that client library and generate of the appropriate output to the
TTY (and parsing cmd line args, of course).

Note that libsvn_ra_dav should be replacement by libsvn_ra_foo. In
particular, we would want a libsvn_ra_direct that directly links the client
to the (server) FS. The API for the RA library is not well-defined at the
moment. I've roughed out a few things based on the DAV work that I did, but
that only hanldes "checkout" at the moment; I haven't really delved into the
other stuff yet. I started to sketch out some "commit" stuff, but paused to
do some Apache/mod_dav work first.

Cheers,
-g

-- 
Greg Stein, http://www.lyra.org/
Received on Sat Oct 21 14:36:09 2006

This is an archived mail posted to the Subversion Dev mailing list.