• 
      

    Add SVN binary file patching.

    Review Request #14717 — Created Nov. 29, 2025 and submitted

    Information

    RBTools
    master

    Reviewers

    This change adds support to the SVNPatcher for applying binary files
    as part of changes. Things have been reorganized a little bit in order
    to make it easier to deal with both empty files and binary files, which
    appear similarly in the diff.

    Additionally, several of our tests had index lines that did not start
    with a /, which was inconsistent with real-world data. I've fixed
    these up to match.

    • Ran unit tests.
    • Used rbt patch with a bunch of changes that did various file
      operations on binary files.
    Summary ID
    Add SVN binary file patching.
    This change adds support to the `SVNPatcher` for applying binary files as part of changes. Things have been reorganized a little bit in order to make it easier to deal with both empty files and binary files, which appear similarly in the diff. Additionally, several of our tests had index lines that did not start with a `/`, which was inconsistent with real-world data. I've fixed these up to match. Testing Done: - Ran unit tests. - Used `rbt patch` with a bunch of changes that did various file operations on binary files.
    xlmyyqprwnolxknqmzqskqkvpurszzwy
    Description From Last Updated

    continuation line over-indented for hanging indent Column: 29 Error code: E126

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (96 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (92 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (92 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (92 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (89 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    line too long (84 > 79 characters) Column: 80 Error code: E501

    reviewbotreviewbot

    Should we just do an else here since we have if empty above.

    maubinmaubin

    Can you add a Version Added to the docstring for this.

    maubinmaubin

    We could pull this out into a patch_binary_files variable and use it below.

    maubinmaubin

    Can you add types to these.

    maubinmaubin

    Can you add a type for this.

    maubinmaubin
    Checks run (1 failed, 1 succeeded)
    flake8 failed.
    JSHint passed.

    flake8

    david
    Review request changed
    Commits:
    Summary ID
    Add SVN binary file patching.
    This change adds support to the `SVNPatcher` for applying binary files as part of changes. Things have been reorganized a little bit in order to make it easier to deal with both empty files and binary files, which appear similarly in the diff. Additionally, several of our tests had index lines that did not start with a `/`, which was inconsistent with real-world data. I've fixed these up to match. Testing Done: - Ran unit tests. - Used `rbt patch` with a bunch of changes that did various file operations on binary files.
    xlmyyqprwnolxknqmzqskqkvpurszzwy
    Add SVN binary file patching.
    This change adds support to the `SVNPatcher` for applying binary files as part of changes. Things have been reorganized a little bit in order to make it easier to deal with both empty files and binary files, which appear similarly in the diff. Additionally, several of our tests had index lines that did not start with a `/`, which was inconsistent with real-world data. I've fixed these up to match. Testing Done: - Ran unit tests. - Used `rbt patch` with a bunch of changes that did various file operations on binary files.
    xlmyyqprwnolxknqmzqskqkvpurszzwy

    Checks run (1 failed, 1 succeeded)

    flake8 failed.
    JSHint passed.

    flake8

    david
    david
    david
    david
    maubin
    1. 
        
    2. rbtools/clients/svn.py (Diff revision 5)
       
       
      Show all issues

      Should we just do an else here since we have if empty above.

    3. rbtools/clients/svn.py (Diff revision 5)
       
       
      Show all issues

      Can you add a Version Added to the docstring for this.

    4. rbtools/clients/svn.py (Diff revision 5)
       
       
      Show all issues

      We could pull this out into a patch_binary_files variable and use it below.

    5. rbtools/clients/svn.py (Diff revision 5)
       
       
       
      Show all issues

      Can you add types to these.

    6. rbtools/clients/svn.py (Diff revision 5)
       
       
      Show all issues

      Can you add a type for this.

    7. 
        
    david
    maubin
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (77e0eb6)