I have written a python script (using pysvn) that needs to know
all file/directory names under a certain URL.
The script works fine, but it takes ages to complete.
The underlying problem being that "svn list -R" is extremly slow.
Does anybody know a workaround against the performance problem
of "svn list -R"?
Our repository has been created just a few months ago, so it is
not really big yet, but an "svn list -R" already takes 9 hours,
53 minutes and 56 seconds if run over my 128 kbit/s ISDN line:
/usr/bin/time -v svn list -R http://svn/svn | wc -l
Command being timed: "svn list -R http://svn/svn"
User time (seconds): 757.42
System time (seconds): 6.58
Percent of CPU this job got: 2%
Elapsed (wall clock) time (h:mm:ss or m:ss): 9:53:56
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 99632
Voluntary context switches: 206892
Involuntary context switches: 613
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
139529
(This test was run at night with no other load on the ISDN line
and almost no other load on either machine)
Needless to say that this makes "svn list -R" completely useless for me. ;-)
Even when run directly on the svn server, the same "svn list -R"
command takes about 45 minutes:
/usr/bin/time -v svn list -R http://svn/svn | wc -l
Command being timed: "svn list -R http://svn/svn"
User time (seconds): 960.05
System time (seconds): 32.64
Percent of CPU this job got: 36%
Elapsed (wall clock) time (h:mm:ss or m:ss): 44:58.62
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 6096
Minor (reclaiming a frame) page faults: 115157
Voluntary context switches: 0
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
133250
I know that this is going to be fixed by issue 1809, see
http://subversion.tigris.org/issues/show_bug.cgi?id=1809
Is there anything that I can do in the meantime?
Would a series of non-recursive lists be faster than the
recursive list?
Do I have to implement some kind of cache in the post-commit
hook?
Any hints will be appreciated.
Thanks and Cheers,
Carsten.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Thu Jul 21 11:04:45 2005