You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2013/03/22 17:56:39 UTC
svn commit: r1459895 - in /subversion/trunk/subversion:
libsvn_client/merge.c tests/cmdline/merge_tests.py
Author: pburba
Date: Fri Mar 22 16:56:39 2013
New Revision: 1459895
URL: http://svn.apache.org/r1459895
Log:
Keep '--- Merging *' and '--- Recording mergeinfo *' notifications
consistent when a file merge is broken into multiple editor drives.
* subversion/libsvn_client/merge.c
(do_file_merge): Handle the case where what is actually merged is a
subset of the requested merge source.
* subversion/tests/cmdline/merge_tests.py
(conflicted_split_merge_with_resolve): Remove workaround introduced in
r1459012.
Modified:
subversion/trunk/subversion/libsvn_client/merge.c
subversion/trunk/subversion/tests/cmdline/merge_tests.py
Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1459895&r1=1459894&r2=1459895&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Fri Mar 22 16:56:39 2013
@@ -7400,6 +7400,26 @@ do_file_merge(svn_mergeinfo_catalog_t re
ctx, scratch_pool,
iterpool));
remaining_ranges = merge_target->remaining_ranges;
+
+ /* We are honoring mergeinfo and this is not a simple record only
+ merge which blindly records mergeinfo describing the merge of
+ SOURCE->LOC1->URL@SOURCE->LOC1->REV through
+ SOURCE->LOC2->URL@SOURCE->LOC2->REV. This means that the oldest
+ and youngest revisions merged (as determined above by
+ calculate_remaining_ranges) might differ from those described
+ in SOURCE. To keep the '--- Merging *' notifications consistent
+ with the '--- Recording mergeinfo *' notifications, we adjust
+ RANGE to account for such changes. */
+ if (remaining_ranges->nelts)
+ {
+ svn_merge_range_t *adj_start_range =
+ APR_ARRAY_IDX(remaining_ranges, 0, svn_merge_range_t *);
+ svn_merge_range_t *adj_end_range =
+ APR_ARRAY_IDX(remaining_ranges, remaining_ranges->nelts - 1,
+ svn_merge_range_t *);
+ range.start = adj_start_range->start;
+ range.end = adj_end_range->end;
+ }
}
}
Modified: subversion/trunk/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_tests.py?rev=1459895&r1=1459894&r2=1459895&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_tests.py Fri Mar 22 16:56:39 2013
@@ -18911,13 +18911,8 @@ def conflicted_split_merge_with_resolve(
# repeat the merge at which point the next sub-range(s) can be merged.
# The mergeinfo on the target then should only reflect that the first
# sub-range (r3-4) has been merged.
-
- # ### Bug? The mergeinfo ranges recorded by the merge differ
- # slightly for a single-file merge vs. a dir merge. That's
- # incidental to the purpose of this test, so we work around it
- # with "target == file and 'X' or 'Y'".
expect = expected_out_and_err(tgt_ospath,
- target == file and '3-4,5-11' or '3-4,6-11',
+ '3-4,6-11',
['3-4', '6-8,10-11'],
prop_resolved=1, expect_error=False)
try_merge(target, 4, [], expect, '3-11')
@@ -18925,7 +18920,7 @@ def conflicted_split_merge_with_resolve(
# Try a multiple-range merge that raises a conflict in the
# first sub-range in the first specified range;
expect = expected_out_and_err(tgt_ospath,
- target == file and '4,5-6,8-10' or '4,6,8-10',
+ '4,6,8-10',
['4', '6', '8,10'],
prop_resolved=1, expect_error=False)
try_merge(target, 4, ['-c4-6,8-10'], expect, '4-6,8-10')
@@ -18936,7 +18931,7 @@ def conflicted_split_merge_with_resolve(
try_merge(target, 6, ['-c4-6,8-10'], expect, '4-6,8-10')
# first sub-range in the last specified range;
expect = expected_out_and_err(tgt_ospath,
- target == file and '4-6,8,9-10' or '4-6,8,10',
+ '4-6,8,10',
['4,6', '8', '10'],
prop_resolved=1, expect_error=False)
try_merge(target, 8, ['-c4-6,8-10'], expect, '4-6,8-10')
@@ -18980,7 +18975,7 @@ def conflicted_split_merge_with_resolve(
expect_error=False)
try_merge(target, None, ['-r6:3', '-r10:7'], expect, '7')
expect = expected_out_and_err(tgt_ospath,
- target == file and '-6,5-4,10-8' or '-6,-4,10-8',
+ '-6,-4,10-8',
['-6', '-4', '-10,-8'],
prop_resolved=1, expect_error=False)
try_merge(target, 6, ['-r6:3', '-r10:7'], expect, '7')
@@ -18989,7 +18984,7 @@ def conflicted_split_merge_with_resolve(
prop_resolved=1, expect_error=False)
try_merge(target, 4, ['-r6:3', '-r10:7'], expect, '7')
expect = expected_out_and_err(tgt_ospath,
- target == file and '6-4,-10,9-8' or '6-4,-10,-8',
+ '6-4,-10,-8',
['-6,-4', '-10', '-8'],
prop_resolved=1, expect_error=False)
try_merge(target, 10, ['-r6:3', '-r10:7'], expect, '7')