Index: subversion/libsvn_client/merge.c =================================================================== --- subversion/libsvn_client/merge.c (revision 24413) +++ subversion/libsvn_client/merge.c (working copy) @@ -339,18 +339,12 @@ merge_b->merge_options, subpool)); } - /* Philip asks "Why?" Why does the notification depend on whether the - file had modifications before the merge? If the merge didn't change - the file because the local mods already included the change why does - that result it "merged" notification? That's information available - through the status command, while the fact that the merge didn't - change the file is lost :-( */ - if (content_state) { if (merge_outcome == svn_wc_merge_conflict) *content_state = svn_wc_notify_state_conflicted; - else if (has_local_mods) + else if (has_local_mods + && merge_outcome != svn_wc_merge_unchanged) *content_state = svn_wc_notify_state_merged; else if (merge_outcome == svn_wc_merge_merged) *content_state = svn_wc_notify_state_changed; Index: subversion/tests/cmdline/merge_tests.py =================================================================== --- subversion/tests/cmdline/merge_tests.py (revision 24413) +++ subversion/tests/cmdline/merge_tests.py (working copy) @@ -216,7 +216,6 @@ # case 4, which we'll handle in a second pass. expected_output = wc.State(other_wc, {'A/B/lambda' : Item(status='U '), 'A/D/G/rho' : Item(status='U '), - 'A/D/G/pi' : Item(status='G '), 'A/D/G/tau' : Item(status='C '), }) @@ -4526,25 +4525,9 @@ # this file, to understand why we shorten and chdir() below. short_copy_of_A_D_path = shorten_path_kludge(copy_of_A_D_path) - # We still need to determine how we will handle notification - # callbacks for multiple merges into a single versioned resource. - # Currently every merge range applied to a target is reported - # separately...but eventually we'll probably change the expected - # output. + # All the file descendants of /A/copy-of-D/ have already been merged + # so the only notification we expect is for the added 'umlaut'. expected_output = wc.State(short_copy_of_A_D_path, { - 'G/pi' : Item(status='G '), - 'G/rho' : Item(status='G '), - 'G/rho' : Item(status='G '), - 'G/tau' : Item(status='G '), - 'G/tau' : Item(status='G '), - 'H/chi' : Item(status='G '), - 'H/chi' : Item(status='G '), - 'H/omega' : Item(status='G '), - 'H/omega' : Item(status='G '), - 'H/psi' : Item(status='G '), - 'H/psi' : Item(status='G '), - 'gamma' : Item(status='G '), - 'gamma' : Item(status='G '), 'umlaut' : Item(status='A '), })