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

Re: [PATCH] fix progress callback for ra_svn

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Tue, 05 Aug 2008 19:10:43 +0200

Joe Orton wrote:
> On Sat, Aug 02, 2008 at 01:31:40PM +0200, Stefan Küng wrote:
>> An example (pseudo-checkout):
>> callback(200, -1) // for connecting
>> callback(300, -1) // for info packets
>> callback(512, 123000) // first file
>> callback(512, 123000) // first file
>> callback(512, 123000) // first file
>> ...
>> callback(30, 123000) // first file
>> callback(300, -1) // for info packets
>> callback(512, 234000) // second file
>> callback(512, 234000) // second file
>> callback(512, 234000) // second file
>> ...
>> callback(30, 234000) // second file
>
> The progress parameter has been a counter which increments for each
> block transferred in all version of neon except 0.27.0, which had a bug
> in the ne_set_progress() compat API which was fixed in 0.27.1 (and
> didn't exist in any earlier version). Are you using 0.27.0 here?

I'm using the latest neon (0.28.2).

But seems I was wrong here: the problem is not in how the callback is
called (I already deal with that in TSVN correctly).

The problem comes from the fact that some svn commands use more than one
session. When that happens, the client (i.e., TSVN) does not know that
the progress information is passed from more than one session and that
leads to really confusing progress info. I've noticed that for example
merges use two sessions (in ra_svn, haven't checked the other layers).
And each session calls the progress callback.

Example (s1 = session 1, s2 = session 2):
s1: callback( 0, -1 )
s2: callback( 0, -1 )
s1: callback( 512, -1 )
s2: callback( 256, -1 )
s1: callback( 1024, -1 )
s2: callback( 512, -1)
...
(this is just an example, real info is usually different, but you
hopefully get what my problem is)

as you can see, the callback is called with 'switching' progress
information, but of course the callback consumer has no information
about the session from which it is called.

Any idea how I could handle this? IMHO Subversion should either
'combine' the progress information of the sessions or otherwise extend
the callback api to include info about the session. Otherwise I don't
know how I can make good use of the progress info.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net

Received on 2008-08-05 19:11:34 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.