You can use the FileVersions command to do this. This allows you to get one complete file and all other files, using the differences between each revision in the same connection. This should give a good performance boost.
public void WriteRevisions(SvnTarget target, SvnRevision from, SvnRevision to) { using(SvnClient client = new SvnClient()) { SvnFileVersionsArgs ea = new SvnFileVersionsArgs { Start = from, End = to }; client.FileVersions(target, ea, delegate(object sender2, SvnFileVersionEventArgs e) { Debug.WriteLine(e.Revision); e2.WriteTo(...); }); } }
This requires a server that supports this feature. I'm not quite sure when this was introduced, but Codeplex running SvnBridge, for example, does not support it. If I remember correctly, the delegate is called only once in this case, in which case you will have to return to the first solution. Under normal circumstances, a delegate is called for each revision between Start and End.
See the WalkMe (and others) method in this test file to learn more about its use (username, password).
source share