[1.7.x] Add better support for copied files in Git diffs.

Review Request #5565 — Created Feb. 28, 2014 and submitted — Latest diff uploaded


Review Board


We introduced support for moved files a while back, but copied files
were never properly supported. Copied files with 100% similarity would
flat-out break.

This change introduces support for parsing the copied file info from git
diffs, storing this state in the database, and showing it in the diff
viewer (just like we show moved files). It doesn't require any schema
modifications in the database.

This is the version for 1.7.x. A separate change will be made for 2.0,
since the code has changed enough since than to warrant some slightly
different changes.

Unit tests pass.

Uploaded a diff file that was broken in the wild. It had 100% similarity
copy and a 88% similarity rename. Before this change, it failed, but after,
it worked.