# # # patch "diff_patch.cc" # from [5437f74550a59622f0aca36b00dd43f104b7692a] # to [d4826b42f48007454d5827ae45c9eb39d99dbe6a] # # patch "diff_patch.hh" # from [f80e158dc7f4b50ac1ce4157896c226e95acfc54] # to [d481b1cf53caed0381272a18713c357880d3bd03] # # patch "work.cc" # from [0b6a0b54ff0eeab3092ad1f8fd73bb2af2308847] # to [9b78a7cb064436d0eed809eaa14c46b548b46096] # ============================================================ --- diff_patch.cc 5437f74550a59622f0aca36b00dd43f104b7692a +++ diff_patch.cc d4826b42f48007454d5827ae45c9eb39d99dbe6a @@ -500,19 +500,26 @@ content_merge_database_adaptor::record_m file_id const & right_ident, file_id const & merged_ident, file_data const & left_data, + file_data const & right_data, file_data const & merged_data) { L(FL("recording successful merge of %s <-> %s into %s") % left_ident % right_ident % merged_ident); - delta left_delta, right_delta; transaction_guard guard(app.db); - diff(left_data.inner(), merged_data.inner(), left_delta); - diff(left_data.inner(), merged_data.inner(), right_delta); - - app.db.put_file_version(left_ident, merged_ident, file_delta(left_delta)); - app.db.put_file_version(right_ident, merged_ident, file_delta(right_delta)); + if (!(left_ident == merged_ident)) + { + delta left_delta; + diff(left_data.inner(), merged_data.inner(), left_delta); + app.db.put_file_version(left_ident, merged_ident, file_delta(left_delta)); + } + if (!(right_ident == merged_ident)) + { + delta right_delta; + diff(right_data.inner(), merged_data.inner(), right_delta); + app.db.put_file_version(right_ident, merged_ident, file_delta(right_delta)); + } guard.commit(); } @@ -574,6 +581,7 @@ content_merge_workspace_adaptor::record_ file_id const & right_id, file_id const & merged_id, file_data const & left_data, + file_data const & right_data, file_data const & merged_data) { L(FL("temporarily recording merge of %s <-> %s into %s") @@ -734,7 +742,7 @@ content_merger::try_to_merge_files(file_ merged_id = merged_fid; adaptor.record_merge(left_id, right_id, merged_fid, - left_data, merge_data); + left_data, right_data, merge_data); return true; } @@ -764,7 +772,7 @@ content_merger::try_to_merge_files(file_ merged_id = merged_fid; adaptor.record_merge(left_id, right_id, merged_fid, - left_data, merge_data); + left_data, right_data, merge_data); return true; } ============================================================ --- diff_patch.hh f80e158dc7f4b50ac1ce4157896c226e95acfc54 +++ diff_patch.hh d481b1cf53caed0381272a18713c357880d3bd03 @@ -48,6 +48,7 @@ content_merge_adaptor file_id const & right_ident, file_id const & merged_ident, file_data const & left_data, + file_data const & right_data, file_data const & merged_data) = 0; virtual void get_ancestral_roster(node_id nid, @@ -75,6 +76,7 @@ content_merge_database_adaptor file_id const & right_ident, file_id const & merged_ident, file_data const & left_data, + file_data const & right_data, file_data const & merged_data); void get_ancestral_roster(node_id nid, @@ -101,6 +103,7 @@ content_merge_workspace_adaptor file_id const & right_ident, file_id const & merged_ident, file_data const & left_data, + file_data const & right_data, file_data const & merged_data); void get_ancestral_roster(node_id nid, ============================================================ --- work.cc 0b6a0b54ff0eeab3092ad1f8fd73bb2af2308847 +++ work.cc 9b78a7cb064436d0eed809eaa14c46b548b46096 @@ -732,7 +732,8 @@ struct content_merge_empty_adaptor : pub virtual void get_version(file_id const &, file_data &) const { I(false); } virtual void record_merge(file_id const &, file_id const &, - file_id const &, file_data const &, + file_id const &, + file_data const &, file_data const &, file_data const &) { I(false); } virtual void get_ancestral_roster(node_id, boost::shared_ptr &)