• 
      

    Fix rbt patch sending prefix levels as strings.

    Review Request #14254 — Created Dec. 3, 2024 and submitted — Latest diff uploaded

    Information

    RBTools
    release-5.x

    Reviewers

    The work done on the new patcher was meant to avoid the case where
    strings were used instead of integers for path prefix levels. However,
    the work here was incomplete.

    SCMClient.apply_patch() does normalize strings to integers, which is
    correct when applying patches using that method. For a brief period of
    time, Subversion (which was susceptible to the string prefix level bug)
    benefited from this, but when it was converted to Patcher, this
    workaround was lost. It's worth noting that apply_patch(), for
    historical reasons, does expect a string, but not all SCMs handled
    this right.

    A core issue here was that rbt patch --px was configured to save the
    value as a string, not an integer. Still, though, given
    apply_patch()'s expectations, this wasn't technically incorrect until
    now. With the new Patcher API, we do now set this to store as an
    integer explicitly, and assert this.

    Patch() has been updated to decode string-wrapped integers, with a
    deprecation warning. This ensures that any other calls that result in a
    Patch object will normalize to the right type.

    Unit tests pass.

    Manually tested rbt patch --px with integers, invalid values, and with
    the argument omitted.

    Commits

    Files