Support SVN 1.9 (nonexistent) diffs with relocation info.

Review Request #8146 — Created May 6, 2016 and submitted — Latest diff uploaded


Review Board


Subversion 1.9 introduced the '(nonexistent)' revision as part of the revision string for newly created files in patches, where earlier versions create '(revision 0)' instead.

Revision string handling must cover some variants and shall extract relocation information -if any- (when creating svn diffs between branches), handle a date string (created by svnlook diff) and extract the revision number or the '(nonexistent)' expression.

The current support in reviewboad for '(nonexistent)' revision specifier does not handle diffs created between branches and does not handle diffs created by svnlook with additional date information.

This patch merges the code paths for subversion 1.9 ('nonexistent') revision specifiers and the already existing revision parser regex.

Patches created with earlier subversion clients are properly handled, as well.

A new unit test is included for the '(nonexistent)' revision string as seen in diffs between branches.

Uploading a SVN 1.9 diff with relocation information is successful.
Ran unittests.