Fix a couple of spotted issues in externals processing
That MR contains three commits fixing spotted issues related to externals handling in the subversion loader:
replay: Rework code updating directory states after copyfrom operations
When a path is copied using a copyfrom operation, externals set on the paths
being copied must also be set on the copied paths.
Previous implementation was using the latest externals values set on the
paths being copied but those could differ from the ones set at revision
copyfrom_rev so ensure to set correct externals on the copied paths.
replay: Export a legacy external definition as official svn client
When an external is defined using legacy format (svn < 1.5), the official
subversion client automatically uses the peg_rev parameter of the export
operation so ensure to have the same behavior in the loader to avoid hash
mismatches in reconstructed file systems.
replay: Ensure to not count same external paths multiple times
It exist some rare cases where a path with externals can be set, then
removed then set again through a copyfrom operation.
Previous implementation did not consider this case and could count the
occurrence of an exernal path multiple times, preventing its removal
when unsetting svn:externals property.
These fixes ensures full visits of repository svn://svn.mplayerhq.hu/mplayer instead of partial ones.
It also fixes most of the issues reported in SWH-LOADER-SVN-FT.
The MR also introduces some improvements regarding Python >= 3.8 support, code readability and tests.
Edited by Antoine Lambert