On Mon, Sep 05, 2011 at 07:38:51PM +0200, Bert Huijben wrote: > > Also slightly OT (no FSFS-guruness here), but I think another > > important use-case is being able to quickly answer the question "in > > which revision was $URL@$REV deleted?" Or "give me the log of > > $URL@$REV up and until it was deleted." > > svn_ra_get_deleted_rev(), which answers this question was introduced in 1.6. > (But I don't know where it is used.)
The guts of this are in svn_repos_deleted_rev(). It runs a binary search across a specific revision range to find the delete event. During this search it repeatedly scans history backwards to find a related node and has to employ a complicated set of rules to deal with copies and replacements. This could be simplified with successor support. Just scan successors upwards from the start revision until either the end revision is reached or the node disappears. The only complication are multiple copies of the node. If more than one copy event is found they will all need to be scanned upwards but only one will match the node we're looking for.