• 
      

    Fix lookup of files containing special characters in Subversion.

    Review Request #11020 — Created May 14, 2020 and submitted

    Information

    Review Board
    release-3.0.x

    Reviewers

    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
    compatibility.

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

    Unit tests pass with both PySVN and Subvertpy backends.

    Summary ID
    Fix lookup of files containing special characters in Subversion.
    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 compatibility. Unit tests were added for both normalization and for lookup of files containing spaces, `&`, `#`, and `?` characters, using new files added to our test repository.
    25e6b4e628004898ee96a1d60b9b2d99faace4d5
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-3.0.x (09b6ad9)