Karl Fogel wrote:
[...]
> It seems we have a problem here. The client needs to do two separate
> things:
>
> 1) Describe the working copy (including depth) to the server.
> 2) Tell the server what depth the client *wants* to have.
>
> Have we been carelessly confusing these two things?
>
> The reporter set_path() calls are about (1), and the 'depth' parameter
> to (for example) svn_ra_do_update2() is about (2).
>
> (I know you know all this, I'm just stating everything very carefully
> here to make sure my own understanding is correct!)
>
> Now, (2) is a single depth, sent exactly once during the update. It
> doesn't really matter if it's sent early or late in the request -- I
> lean toward early, because in some future full-duplex universe, that
> might allow the server to start sending back answers sooner.
>
> I think this means that r24493, r24468, and r24453 were mistaken. We
> should be transmitting a depth from client to server, and remembering
> it on the server side as the *requested* depth, not confusing it with
> the *described* (default) depth.
>
> Does this analysis sound right to you?
>
Yes, that's pretty much what I was thinking.
>> With old servers it gets more complicated. You'd probably have to call
>> delete-path on each file or directory that's missing, except that a
>> working copy doesn't actually have that information.
>
> I don't think that's necessary, we're just going to have the client
> ignore unwanted portions of the update (cf. Mike Pilato's recent
> patch to the RA layers).
>
How does this support the "upgrade" scenario? If you want to upgrade a
working copy from, e.g, svn_depth_files to svn_depth_infinity, you have
to get the (old) server to send you the complete subdirectories, not
just updates. That's why I suggested the need to call delete-path on
the missing stuff (to mark the subdirectories as missing in the working
copy, telling the server to send fulltexts, not deltas).
The problem here is that the depth-files working copy doesn't know the
names of the subdirectories that it's missing, so you wouldn't be able
to call delete-path on them.
Hope I'm making sense here, the caffeine hasn't kicked in yet :).
>> And, of course, whatever solution we come up with must simultaneously
>> work for both old and new servers, because we don't currently
>> distinguish between them.
>
> Oh, I think we're just going to have different solutions for the
> different situations.
>
> For old servers, the client sends a requested depth (which the server
> ignores) and per-path depth information (which the server also
> ignores), and then the client ignores extra information the server
> sends back.
>
> For new servers, the client doesn't need to ignore anything, because
> the server doesn't send any extra information anyway. But if it did,
> the client would just ignore it :-).
Sure, this works fine for "normal" updates, it's upgrades that I was
worried about...
--
Vlad
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri May 4 07:35:25 2007