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)