# # # patch "roster_merge.cc" # from [d565f9299ca85d77bd1d7f2a29196d7161f0ea08] # to [d113e5d648bd98bdc15ba7a53958496ea924bd2b] # # patch "tests/merge_with_conflicting_name_and_renamed_dir/__driver__.lua" # from [121893f5d3789fef931c65b186461a78a5509591] # to [a321dc78aef12dc78e2a47ab269f2ccd280f35ff] # ============================================================ --- roster_merge.cc d565f9299ca85d77bd1d7f2a29196d7161f0ea08 +++ roster_merge.cc d113e5d648bd98bdc15ba7a53958496ea924bd2b @@ -525,15 +525,35 @@ roster_merge_result::report_duplicate_na left_roster.get_name(left_nid, left_name); right_roster.get_name(right_nid, right_name); - I(left_name == right_name); - shared_ptr left_lca_roster, right_lca_roster; revision_id left_lca_rid, right_lca_rid; adaptor.get_ancestral_roster(left_nid, left_lca_rid, left_lca_roster); adaptor.get_ancestral_roster(right_nid, right_lca_rid, right_lca_roster); - P(F("conflict: duplicate name '%s'") % left_name); + // In most cases, the left_name equals the right_name. However, maybe + // a parent directory got renamed on one side. In that case, the names + // don't match, but it's still the same directory (by node id), to + // which we want to add the same file (by name). + if (left_name == right_name) + { + file_path dir; + path_component basename; + left_name.dirname_basename(dir, basename); + P(F("conflict: duplicate name '%s' for the directory '%s'") % basename % dir); + } + else + { + file_path left_dir, right_dir; + path_component left_basename, right_basename; + left_name.dirname_basename(left_dir, left_basename); + right_name.dirname_basename(right_dir, right_basename); + I(left_basename == right_basename); + P(F("conflict: duplicate name '%s' for the directory\n" + " named '%s' on the left and\n" + " named '%s' on the right.") + % left_basename % left_dir % right_dir); + } node_type left_type = get_type(left_roster, left_nid); node_type right_type = get_type(right_roster, right_nid); ============================================================ --- tests/merge_with_conflicting_name_and_renamed_dir/__driver__.lua 121893f5d3789fef931c65b186461a78a5509591 +++ tests/merge_with_conflicting_name_and_renamed_dir/__driver__.lua a321dc78aef12dc78e2a47ab269f2ccd280f35ff @@ -44,6 +44,6 @@ commit() commit() -- try merging -xfail(mtn("merge"), 1, false, true) +check(mtn("merge"), 1, false, true) check(qgrep("conflict: duplicate name", "stderr"))