This was part of issue 575, but we've split disjoint updates into this new issue. The basic plan is to do all updates by running dir_deltas between *two* svn transactions on the server. In a vanilla update, the second txn will just be a tiny stub representing HEAD. In a switched update, the second txn will have all sorts of wonky paths@revs spliced into it so that it reflects the working copy's url structure, but with nodes at HEAD (or whatever the target rev is) instead of at the base revisions. This implies a new ra callback for the state reporting mechanism, so the reporter can tell the server what to hang where in that txn.