Fix lookup of files containing special characters in Subversion.

Review Request #1927 — Created May 21, 2020 and submitted

Review Board
This change fixes looking up files that contain characters that may be
considered special in a URL, such as `#` or `?`. There's a bit of a
backstory to this change.

Back in 2008, when the Subversion support was brand-new, we accepted a
patch that fixed looking up filenames containing spaces. Things with our
implementation was different back then, and this patch accomplished its
goals by taking a normalized URL to a file in Subversion, splitting the
path out, quoting its contents, and rebuilding the path.

The act of splitting the path resulted in `#` and `?` characters being
split from the rest of the path, and they weren't put back in. This came
up in a bug report from Rob Petti, who provided a patch designed to work
around the bad behavior in the original implementation. After some
investigation, we figured out part of what was going on, and Rob built
an implementation that addresses the issue at its core, removing the
older code in the process.

This change builds on top of that, making some tweaks based on my
investigations into the original change, and Subversion compatibility.
It turns out that these days, we do not need to quote anything going
into Subversion paths (on either the PySVN or Subvertpy backends), but
as this was a problem at some point, we'll continue to quote for

Unit tests were added for both normalization and for lookup of files
containing spaces, `&`, `#`, and `?` characters, using new files added
to our test repository.

Testing Done:
Unit tests pass with both PySVN and Subvertpy backends.

Reviewed at

  1. Ship It!
Review request changed

Status: Closed (submitted)

  1. Ship It!