SVN is not nearly as nice as perforce. It feels so rough and unpolished, and there are things that scare me and frustrate me about it.
First, you get the choice between a battle tested but fragile repo format, or a moderately tested but nearly unwedgable repo format. If you go with the fragile one, you have to write wrapper scripts if more than one user is going to access the database. If you go with the robust one, you run the risk of some horrible bug popping up (remote as the chance is, it is mentioned in the propganda document).
Branching is why everybody is supposed to be switching from CVS to SVN, and its great, really, really easy. But if you’re going to have such great branching, you should also have great merging, which SVN completely misses out on.
With p4, you can integrate two branches, and you automatically get the changes since you last integrated. With svn you need to first look in the logs to find the changes you want before you can merge. If you’ve merged more than once on a branch, you have to remember (or look in the logs) to find the correct last merge point.
SVN knows exactly when I branched, and exactly when I last merged, so why can’t it keep track of these things by itself? At worst it could use some custom property to tag these things…