On Wed, 2005-10-12 at 18:08 -0700, Mike Stump wrote:
> On Oct 11, 2005, at 7:42 PM, Daniel Berlin wrote:
> > So, Mike Stump said his update times with svn from toolchain.org  
> > were a
> > little slow.
> 
> > Let me know if it's still slow for you.
> 
> Ok, had a chance to upgrade my svn to 1.2.3, and time from gcc.gnu.org:
> 
> $ cd gcc
> $ time svn update *.c
> [ lots o output that is annoying ]
> real    3m28.134s
> user    0m7.665s
> sys     0m5.403s


>  From top:
> Networks:     16981 ipkts/2674K          10405 opkts /1370K
> Disks:          106 reads/781K             345 writes/4755K

vs
> mrs $ time svn update
> real    0m4.833s
> user    0m0.577s
> sys     0m0.778s
>  From top:
> Networks:       176 ipkts/20K               35 opkts /7K
> Disks:            6 reads/48K              864 writes/12894K
> 
> All operations were hot nops.

This is actually expected behavior right now.

svn up *.c ends up being the equivalent of for x in *.c; svn update $x;
done
It treats each argument as a separate update operation, with all the
protocol overhead that incurs.
It would be nice to change that, but it's actually an uncommon enough
use case that it hasn't been a priority.

svn up just says "I have revision x of directory, give me the latest",
and applies those change.s
svn up *.c reports the revision for each file, and asks for the update,
for each file, as a seperate update.

The current remote access API has no way of saying "Give me the updates
for only these files", only "give me the update for this tree", or "give
me the update for this one item".

Once we come up with an API to do this, we'd probably do something like
"try to find common parent of all requested updates if possible, get all
revisions for those parents, only apply to selected targets".
This still won't be faster than svn up with no args though, because you
either end up with multiple parents you ask about (in case the updates
you request are disjoint in paths), asking about the root of the repo,
or you have to filter the revisions.

However, remember that reghunts can now be done by global revision
number, instead of just by file revisions.

--Dan

Reply via email to