Fix parsing Git diffs with both renaming/copying and changing modes on files.

Review Request #6754 — Created Jan. 9, 2015 and submitted — Latest diff uploaded

Information

Review Board
release-2.0.x
efddf5d...

Reviewers

Our Git diff parsing logic assumed that if there was a mode change, the
file was being edited and not renamed/copied. Whether or not that was
once valid, it's not now.

We now separate out the mode checks from the rename/copy checks. As part
of this, we also needed to update those checks to ensure they didn't
check out of the line range, as that resulted in a breakage in a
previous test.

A unit test was added to test for this case.

Unit tests pass.

Tested manually with a previously broken diff. Saw that it contained the expected information.