Fix parsing git diffs with binary changes.

Review Request #4477 — Created Aug. 22, 2013 and submitted

Information

Review Board
master

Reviewers

Fix parsing git diffs with binary changes.

Git diffs containing binary changes could appear as empty files if
they're the last file in the diff. This was due to how the
_is_empty_change code worked. It assumed there was at least 3 more lines
in the file to work with, and if not, it would assume the change was
empty. Binary changes appearing at the end of the file would fail this
test.

That function is now gone. Instead, we do an initial check that we're
not at the end of the file, before parsing content, and then we keep an
empty_change state around. It defaults to True, but if we find any diff
content or a binary file, we set it to False. We use this state to
determine, at the end of the function, what to return.
Tested uploading a change containing a normal file and then a binary file,
in that order, without problems. Previously, the binary file would go missing.
If it appeared first, it would work fine.

Unit tests pass.
reviewbot
  1. This is a review from Review Bot.
      Tool: PEP8 Style Checker
      Processed Files:
        reviewboard/scmtools/git.py
      Ignored Files:
    
    
  2. 
      
reviewbot
  1. This is a review from Review Bot.
      Tool: Pyflakes
      Processed Files:
        reviewboard/scmtools/git.py
      Ignored Files:
    
    
  2. 
      
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed