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

Re: Question regarding svn_ra_do_update()

From: Ben Collins-Sussman <sussman_at_red-bean.com>
Date: 2006-11-14 16:09:27 CET

On 11/14/06, Ph. Marek <philipp.marek@bmlv.gv.at> wrote:

> > If you use do_diff2(), you may get what you want. It's extremely
> > similar to do_update(), but has a text_deltas argument. If the
> > argument is false, then you only get a 'skeletal' report back,
> > indicating which files need to be updated. It's up to you to then
> > call ra_get_file() on each one.
> Sorry for being ignorant, but the only difference I see (against
> svn_ra_do_status) are the text_deltas and ignore_ancestry arguments.


> That's what I asked before - do I have to do a remote-status and then get all
> needed files?

Yes, that's one possibility. Another possibility is to call do_diff()
with textdeltas==FALSE.

The do_update() function was specifically designed with libsvn_wc in
mind (i.e. that text-bases are available); I don't think we're going
to add a 'textdeltas' argument to it as you suggest, because we
already have do_diff() and do_status() to accomplish what you want.

Here's a way of thinking about these three functions, that will
hopefully clarify their design to you:

The reporter vtable's purpose is *not* to say "here's what I did".
Its purpose is to 'build a temporary tree on the server' which the
server can then compare to a revision. If your working copy has a
mixture of revisions, you need to build a tree on the server that
matches. If you want a missing file to be restored, you should report
the file as missing (reporter->delete_path()). If a file is merely
scheduled for deletion, there's nothing to say; you want the file to
still be present in the temporary tree when the comparison happens.

> Well, you're right, I already feel a bit - this assumption is not only done in
> the working copy layer (as I hoped), but is written over the entire ra layer
> as well ...

It's not as bad as you think. Yes, the do_update() function assumes
you have text-bases. But the majority of the routines in svn_ra.h are
generic APIs for browsing a repository: fetching a file, reading the
contents of a directory, retrieving the history of a path, and so on.

> I just assumed (yes, I know) that since subversion without text-base is work
> in progress that someone had a bit of brainstorming how to implement it.

There's no work in progress. It was proposed over a year ago as a
Summer of Code project, but the work never happened. Nobody's working
on it, and I don't even think anyone has started typing up a design
document yet.

Can I ask what you're doing? Most people use svn_ra.h to create
repository browsers and so on. Are you creating a whole new version
control system? Some new working copy library? If so, you might
want to look at svk. svk implemented their own working copy called

To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Nov 14 16:09:57 2006

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