• 
      

    Improve interdiff file matching to better match more files.

    Review Request #8411 — Created Sept. 18, 2016 and submitted

    Information

    Review Board
    release-2.5.x
    04415e6...

    Reviewers

    The new interdiff file matching had a couple of cases where files
    weren't matching up, or matching up well enough. It was possible to get
    into states where the same file would appear twice, once with the
    changes reverted (from the first revision) and once with the changes
    added (from the second revision). Depending on new/deleted states, this
    could actually happen even if the file wasn't actually changed between
    revisions.
    
    The changes have a lot to do with the fact that the "new" file state
    isn't always very reliable. We sometimes set things as new when the file
    was introduced in a parent diff (a bug that we need to fix separately).
    
    This change improves the logic, catching two more cases. First, after
    the full-detail check (same source/destination files and new/delete
    states), we now check for matches where the source/destination match
    between the two, but where the source and destination themselves do not
    match (moved/copied files). These take precedence over files with
    new/deleted state changes (as per the bug above).
    
    After all the other matching checks, we now do one last check to match
    any remaining files together that share the same source files. This
    falls back to the original behavior we had for interdiff matching, with
    one exception: Files that are flagged as new in revision 2 but not in
    revision 1 will not match, and files flagged as deleted in revision 1
    but not 2 will not match.
    
    This should address the major remaining issues for interdiff matching.

    Unit tests pass.

    Tested with a real-world diff that had problems on reviews.reviewboard.org.
    There were two entries before, but now they match up correctly.

    david
    1. Ship It!
    2. 
        
    reviewbot
    1. Tool: Pyflakes
      Processed Files:
          reviewboard/diffviewer/tests.py
          reviewboard/diffviewer/diffutils.py
      
      
      
      Tool: PEP8 Style Checker
      Processed Files:
          reviewboard/diffviewer/tests.py
          reviewboard/diffviewer/diffutils.py
      
      
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-2.5.x (ceb0efa)