Author: stsp
Date: Wed Jun 4 14:44:03 2014
New Revision: 1600244
URL: http://svn.apache.org/r1600244
Log:
* subversion/libsvn_diff/parse-diff.c
(parse_mergeinfo): Properly handle reverse patches by swapping
forward and reverse merges if required.
Modified:
subversion/trunk/subversion/libsvn_diff/parse-diff.c
Modified: subversion/trunk/subversion/libsvn_diff/parse-diff.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/parse-diff.c?rev=1600244&r1=1600243&r2=1600244&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/parse-diff.c (original)
+++ subversion/trunk/subversion/libsvn_diff/parse-diff.c Wed Jun 4 14:44:03
2014
@@ -537,24 +537,50 @@ parse_mergeinfo(svn_boolean_t *found_mer
{
if (hunk->original_length > 0) /* reverse merges */
{
- if (patch->reverse_mergeinfo == NULL)
- patch->reverse_mergeinfo = mergeinfo;
+ if (patch->reverse)
+ {
+ if (patch->mergeinfo == NULL)
+ patch->mergeinfo = mergeinfo;
+ else
+ SVN_ERR(svn_mergeinfo_merge2(patch->mergeinfo,
+ mergeinfo,
+ result_pool,
+ scratch_pool));
+ }
else
- SVN_ERR(svn_mergeinfo_merge2(patch->reverse_mergeinfo,
- mergeinfo,
- result_pool,
- scratch_pool));
+ {
+ if (patch->reverse_mergeinfo == NULL)
+ patch->reverse_mergeinfo = mergeinfo;
+ else
+ SVN_ERR(svn_mergeinfo_merge2(patch->reverse_mergeinfo,
+ mergeinfo,
+ result_pool,
+ scratch_pool));
+ }
hunk->original_length--;
}
else if (hunk->modified_length > 0) /* forward merges */
{
- if (patch->mergeinfo == NULL)
- patch->mergeinfo = mergeinfo;
+ if (patch->reverse)
+ {
+ if (patch->reverse_mergeinfo == NULL)
+ patch->reverse_mergeinfo = mergeinfo;
+ else
+ SVN_ERR(svn_mergeinfo_merge2(patch->reverse_mergeinfo,
+ mergeinfo,
+ result_pool,
+ scratch_pool));
+ }
else
- SVN_ERR(svn_mergeinfo_merge2(patch->mergeinfo,
- mergeinfo,
- result_pool,
- scratch_pool));
+ {
+ if (patch->mergeinfo == NULL)
+ patch->mergeinfo = mergeinfo;
+ else
+ SVN_ERR(svn_mergeinfo_merge2(patch->mergeinfo,
+ mergeinfo,
+ result_pool,
+ scratch_pool));
+ }
hunk->modified_length--;
}