# HG changeset patch # User Mads Kiilerich # Date 1365555296 -7200 # Node ID 631e8000eae8b333390fbfd39ddfd547aec00cbc # Parent 6e4e8a03afc478e607910929da834595be6b787f diff parser: match the header order of hg diff --git patches The output might look like: diff --git a/A b/B old mode 100644 new mode 100755 rename from A rename to B --- a/A +++ b/B Such files were shown as 'modified binary file chmod 100644 => 100755' without diff. Now the chmod and diff will be shown ... but still not the rename. Correct parsing of headers do require a better parser - one do not just use a regexp. diff -r 6e4e8a03afc4 -r 631e8000eae8 rhodecode/lib/diffs.py --- a/rhodecode/lib/diffs.py Wed Apr 10 02:54:31 2013 +0200 +++ b/rhodecode/lib/diffs.py Wed Apr 10 02:54:56 2013 +0200 @@ -172,11 +172,11 @@ _hg_header_re = re.compile(r""" #^diff[ ]--git [ ]a/(?P.+?)[ ]b/(?P.+?)\n + (?:^old[ ]mode[ ](?P\d+)\n + ^new[ ]mode[ ](?P\d+)(?:\n|$))? (?:^similarity[ ]index[ ](?P\d+)%(?:\n|$))? (?:^rename[ ]from[ ](?P\S+)\n ^rename[ ]to[ ](?P\S+)(?:\n|$))? - (?:^old[ ]mode[ ](?P\d+)\n - ^new[ ]mode[ ](?P\d+)(?:\n|$))? (?:^new[ ]file[ ]mode[ ](?P.+)(?:\n|$))? (?:^deleted[ ]file[ ]mode[ ](?P.+)(?:\n|$))? (?:^index[ ](?P[0-9A-Fa-f]+)