Another problem with Ev2. Consider a cheap copy: svn cp ^/trunk ^/branches/foo
With Ev1 this commit sends only a small amount of data across the wire. This is true even as the number of branches gets large. In the past there was a backend "big directory" storage problem, but that was solved by enabling directory deltafication. With Ev2 the "big directory" problem now applies to the network transfer. Adding a child to branches requires an alter_directory call with the new list of children, so the old list of children has to be sent from the server to the client and then the client has to send it back with the new child added. Very little other data has to be transferred. For big directories transferring the list of children will become the bottleneck. I think alter_directory should be changed to some sort of delta API: one list of added children and one list of deleted children. [Conceivably the RA implementation of the current Ev2 API could deltify the list sent back by caching the list received but that's horrible and doesn't solve the problem of getting the list in the first place.] I guess we should consider doing the same for the list of properties; perhaps with lists for added properties, modified properties and deleted properties. -- Philip