We have a repository with revision grows up to about 900000, and recently we try to make a Copy(Branch) every 4 weeks.
The problem is that if we want to show-log of a folder which yet has no commit in the new branch, we will stuck for minutes till the logs show. And the first log will be "new branch created".
We've debugged this issue with up-to-date source code built binary, and found out the most time-cost part is in method MakeRangeIterable.
For example:
1. file A in folder ROOTDIR/F1/F2 has serveral revision(300000, 310000,320000) in branch B1,
2. file A's svn url in B1 is "ROOTURL/Branches/B1/ROOTDIR/F1/F2/A"
3. new branch B2 is created at revision 700000
4. file A's svn url in B2 is "ROOTURL/Branches/B2/ROOTDIR/F1/F2/A"
5. now current revision is 800000, show-log on A or F2 will run into MakeRangeIterable with path="ROOTURL/Branches/B1/ROOTDIR", startRevision=800000, endRevision=700001
6. at last, this will query svn server with [700001, 800000] on "ROOTURL/Branches/B1/ROOTDIR", then stuck for minutes.