(Hope you don't mind my keeping this on the public list... others may
learn from this discussion.)
Alexander Mueller <alex@littleblue.de> writes:
[...]
>
> This is all fine with me, but I found code like:
>
> file trace-update.c
> ----> snip
> static svn_error_t *
> replace_directory (svn_stringbuf_t *name,
> void *parent_baton,
> svn_revnum_t base_revision,
> void **child_baton)
> {
> struct dir_baton *parent_d = parent_baton;
> struct dir_baton *child_d
> = apr_pcalloc (parent_d->edit_baton->pool, sizeof (*child_d));
>
> child_d->edit_baton = parent_d->edit_baton;
> child_d->parent_dir_baton = parent_d;
> child_d->path = svn_stringbuf_dup (parent_d->path, child_d->edit_baton->pool);
> svn_path_add_component (child_d->path, name, svn_path_local_style);
>
> *child_baton = child_d;
>
> /* Don't print anything for a directory replace -- this event is
> implied by printing events beneath it. */
>
> return SVN_NO_ERROR;
> }
> <---- snap
>
> Ok. If all of this action is optional (not necessary for function).
> Why is it used, then?
This is part of a very specific "after" editor that exists in the
command-line client code. It is passed to svn_client_update(). This
way, whenever the command-line client receives a patch to a file, it
can print a "U" to stdout, and so on.
But does a GUI client want to do this? Probably not. Maybe you want
little animated bullets to appear next to a tree diagram. Maybe you
want to append text to an update-window. Either way, you'll want to
write your own "after" editor to graphically indicate the status of an
update-in-progress.
> > The svn_cl__* code is the command-line client. You should definitely
> > look at it as an example of "how to use svn_client.h"... but you
> > shouldn't write JNI wrappers around them! Wrap svn_client.h and the
> > headers it immediately depends on.
>
> I am unsure if there is essential code implemented in snv_cl_.
> You know, can I use the svn_client.h API without duplication logic thats
> include in the command line code? If there is redundant code maybe I should
> use the functions that implement this functionality.
There shouldn't be any "essential" code in svn_cl__*. We've tried
very hard to draw a distinct line between routines that *all* clients
need and ones that are absolutely specific to a the needs of a
command-line client.
So if you find any code in subversion/client/cmdline/ that you suspect
everybody will need, please let us know. It would be a bug in our
design! :-)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 21 14:36:33 2006