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

Re: cheap copies

From: <cmpilato_at_collab.net>
Date: 2002-11-09 01:04:55 CET

Ben Collins-Sussman <sussman@collab.net> writes:

> Whenever we make a branch or tag (svn cp URL URL), it seems to take a
> disconcertingly long time for the commit to finish. I mean, it takes
> *noticeably* longer than when I simply commit a few file
> changes... like 10 seconds instead of 2 or 3.
>
> Something seems to be interfering with our magic O(1) copies.
>
> Maybe it's something within libsvn_fs, like walking the tree to make
> every node immutable?

Every node? It walks the FROM_PATH read-only, then walks the TO_PATH
making things mutable (between '/' and TO_PATH's parent).

> Maybe the post-commit-hook script is doing a full tree walk to
> discover it's a copy?

Uh...no. We background our post-commit hook.

> There's an O(N) thing happening somewhere, and I'm about a hair away
> from filing an issue.

Are you sure it's O(N)? Have you copied anything other than /trunk to
verify this?

A-ha. I found the culprit (4 minutes to debug...it's *goooooood* to
know the filesystem code).

mod_dav_svn's MERGE response handle doesn't use the USE_COPYFROM_ARGS
flag to svn_repos_dir_delta(). Which means that dir_delta is sending
an ADD for every single file and dir in the copied tree (despite the
fact that client doesn't give a rip, and will immediately discard this
info as rubbish on a repos-to-repos copy operation).

All we need now is a fix.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Nov 9 01:07:37 2002

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