ra: Add support for subversion external definitions
Subversion external definitions set on directories through the use of the svn:externals property are now handled by the loader.
As with a svn export operation, externals will be attempted to be exported in the paths they are defined. If an external is no longer valid (404), the error will be ignored and the next one will be processed.
The implementation takes care of keeping the reconstructed repository filesystem for a revision in sync with a svn export operation while externals are added, updated or removed across revisions replay.
Related to #611
Depends on !93 (closed)
Test Plan
I have tested the implementation on numerous repositories from the list that can be found in #611.
Proceeding like this helped me to find edge cases that I did not think about and fix them. I have added a dedicated test for each of them.
The implementation seems now pretty stable, I hope having covered all the weird
stuffs that can happen when dealing with external definitions in subversion.
Anyway, if some issue remains, they will be detected by the loader post_load
operation checking the reconstructed filesystem for the last loaded revision
is the same as the one obtained with a subversion export operation.
Migrated from D6895 (view on Phabricator)