Checkout
rhuijben
committed
on 24 Feb 15
Fix another misreported reason in the update editor, and the resolver to
handle this change without affecting features.

As part of this fix… Show more
Fix another misreported reason in the update editor, and the resolver to

handle this change without affecting features.

As part of this fix a few TODO's in the move-update conflict resolver code,

by combining the group of functions that handled breaking moves, and creating

moved_away conflicts to just two functions, that can handle the direct move

and descendant cases alike, and with proper op-depth handling.

Combining the functions uncovered yet another op-depth bug where the break

moves operation was applied to the wrong layer.

* subversion/libsvn_wc/conflicts.c

 (resolve_tree_conflict_on_node): Update caller.

 (conflict_status_walker_baton): Add boolean.

 (conflict_status_walker): Set value in baton if we resolved something.

 (svn_wc__resolve_conflicts): Continue as long as we resolved something

   in the previous batch. Handle depth filtering in second pass.

   Use the resolved_one boolean.

* subversion/libsvn_wc/update_editor.c

 (check_tree_conflict): Report local replacements as replacements, even when

   whatever was there was moved to make the conflict resolver pick the

   right strategy.

* subversion/libsvn_wc/wc-queries.sql

 (STMT_SELECT_MOVED_DESCENDANTS_SHD): Remove now unused query.

* subversion/libsvn_wc/wc_db.c

 (svn_wc__db_op_break_move_internal): Rename argument to match task.

 (db_op_mark_resolved): Rename to...

 (svn_wc__db_op_mark_resolved_internal): ... this.

 (svn_wc__db_op_mark_resolved): Update caller.

 (op_revert_txn): Update caller. Pass proper origin depth.

* subversion/libsvn_wc/wc_db.h

 (svn_wc__db_resolve_delete_raise_moved_away): Rename to...

 (svn_wc__db_op_raise_moved_away): ... this.

 (svn_wc__db_resolve_break_moved_away,

  svn_wc__db_resolve_break_moved_away_children): Combine into..

 (svn_wc__db_op_break_moved_away): ... this.

* subversion/libsvn_wc/wc_db_private.h

 (svn_wc__db_op_break_move_internal): Rename argument.

 (svn_wc__db_op_mark_resolved_internal): Rename argument.

* subversion/libsvn_wc/wc_db_update_move.c

 (find_src_op_depth): Return a more generic error, as this function

   is used in more places than inside the conflict resolver.

 (get_tc_info): Remove function.

 (fetch_conflict_details): New function, partially based on get_tc_info.

 (svn_wc__db_op_raise_moved_away_internal): Update argument. Fetch true

   delete depth for created conflicts.

 (svn_wc__db_resolve_delete_raise_moved_away): Rename to...

 (svn_wc__db_op_raise_moved_away): ... this. Use SVN_WC__DB_WITH_TXN4()

   to obtain everything inside a transaction. Mark conflict resolved

   before installing new tree conflicts.

 (break_moved_away_children): Rename to...

 (break_moved_away): ... this and handle both cases in a single function.

 (svn_wc__db_resolve_break_moved_away): Rename to...

 (svn_wc__db_op_break_moved_away): ... this. Update caller. Use

   SVN_WC__DB_WITH_TXN4() to calculate values inside txn.

* subversion/tests/libsvn_wc/op-depth-test.c

 (FILE_EXTERNAL): New macro.

 (print_row): Handle a few more cases with C compatible output.

 (del4_update_edit_AAA,

  move4_update_delself_AAA): Update expected results.

Show less