Reported as rdar://5878181
Main Questions:
1. What command(s) does Xcode 3.0 execute when performing SCM --> Get SCM Info and/or an SCM --> Compare With --> Revision? 2. Why does executing these commands (and perhaps others) on a single file result in transferring ~4-5+M of data?
Background:
We recently moved our repository from CVS to SVN[1]. The svn server hardware is bigger/faster in all respects. And, except for the case outlined below, interaction with the repository is faster.
Relevant Statistics:
1. Subversion 1.4.6, running on Redhat Linux Enterprise 5 2. Xcode 3.0, with Subversion 1.4.6 client 3. svn:// protocol 4. Total exported trunk size is ~20,000 files, with a total size of ~250M 5. Multiple branches and tags of the trunk are also present 6. Current subversion global revision number is < 1000.
My xcode project file is in the trunk, and it contains more than half (>10,000) the files that are in the trunk. Opening my project is fast. And even the initial "SCM Operation" in the Activity Window completes in 10-15 seconds. So no complaints there.
However, when performing a Get SCM Info or Compare With operation on just a single file, it takes 25-30 seconds to complete when I do it remotely via my DSL connection. According to Activity Monitor, my Network is peaked (incoming data) during the operation while it's retrieving (I assume) information from the repository. For Compare With, it's actually fast to do the actual compare, it's the part where it's building the list of revisions that's really slow.
I have been unable to duplicate this behavior using svn from the command line (svn log, svn stat, etc). The only svn commands I've found that take as long or longer are svn update, svn checkout, or svn export (perhaps others, I haven't tried them all), and even they only take that long if I'm updating/checking-out/exporting a large section of the repository, operating on a single file or small directory, they take very little time.
I also can't duplicate this behavior using the SvnX GUI.
Any ideas?
Rob
[1] The new subversion repository is "clean". That is, we didn't attempt to import the history/tags/branches from cvs to svn because the cvs repository was seven years old and we decided to reorganize it and rewrite the entire build system at the same time.
|